【问题标题】:hl.regex.pattern not working in solrhl.regex.pattern 在 solr 中不起作用
【发布时间】:2012-09-28 19:43:10
【问题描述】:

我正在使用 solr 来获取数据。 我正在使用以下参数来获取数据:

http://testURL/solr/core0/select?start=10&rows=10&hl.fl=CC&hl.requireFieldMatch=true&hl=on&hl.maxAnalyzedChars=1&hl.fragsize=145&hl.snippets=99&sort=COlumn1+desc&q=CC%3a%28%22test%22~2%29&fl=title120%2ccolumn2%2ccolumn3%2cRL_DateTime%2cSid%2ccolumn4%2cguid%2chour&hl.regex.pattern=^\d+%20%3E%3E%20

上述查询不适用于 hl.regex.pattern 参数。

如果我删除“hl.regex.pattern”而不是在突出显示部分提供结果。 如果我提供该正则表达式模式,则不会。

正则表达式在我的 c# 代码中工作。

那么我在这里遗漏了什么吗?

【问题讨论】:

    标签: regex solr highlight


    【解决方案1】:

    几乎可以肯定是^\。这些在 URI 中无效,因此您必须转义它们。

    来自RFC 1738

    只有字母数字、特殊字符“$-_.+!*'()”和 可以使用用于保留目的的保留字符 在 URL 中未编码。

    这有点过时了,因为现在允许使用像 λάμδα 这样的非罗马字母数字,但要点是一样的。

    改用hl.regex.pattern=%5E%5Cd+%20%3E%3E%20

    【讨论】:

    • http://testURL/solr/core0/select?start=10&rows=10&hl.fl=CC&hl.requireFieldMatch=true&hl=on&hl.maxAnalyzedChars=1&hl.fragsize=145&hl.snippets=99&sort=COlumn1+desc&q=CC%3a%28%22test%22~2%29&fl=title120%2ccolumn2%2ccolumn3%2cRL_DateTime%2cSid%2ccolumn4%2cguid%2chour&hl.regex.pattern=%5E%5Cd+%20%3E%3E%20 我已经把我的网址改成了这个。但它仍然无法正常工作。
    • 您如何将其转换为正则表达式?我唯一能想到的是您可能需要双重转义\d。试试hl.regex.pattern=%5E%5C%5Cd+%20%3E%3E%20。如果这不起作用,则可能是您的实现或您的正则表达式本身存在问题。
    • 实际上我的正则表达式发生了一些变化。现在是 ^(\ds:\s*\w) 所以它被转换为 %5E%28%5Cd*s:%5Cs*%5Cw*%29
    • 并且正则表达式在我的 c# 代码中运行良好,如果我不提供 hl.regex.pattern,solr 查询也运行良好。现在它正在提供数据,但正则表达式参数对结果没有影响。所以我需要提供任何其他参数以及正则表达式参数?
    • 你的实现一定有问题。转义版本是一个完全有效的 URL。我建议逐步使用调试器并确保您的正则表达式实际上正在运行;可能有某种安全措施在起作用,或者您的正则表达式没有被解码,或者您可能需要双重转义 \d,正如我所说的。没有看到你的实现或者它是如何在你的服务器上运行的,就没有足够的信息。
    猜你喜欢
    • 1970-01-01
    • 2017-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-25
    • 2016-10-17
    • 2012-06-29
    相关资源
    最近更新 更多