【问题标题】:Solr Webapp Regular Expression SearchSolr Webapp 正则表达式搜索
【发布时间】:2016-03-01 16:22:46
【问题描述】:

我正在关注 Solr quick start tutorial 并启动并运行 Web 应用程序。我知道 Solr 具有正则表达式搜索功能,但我很难让它工作。

所以在这里,我有一个名为 MFR 的字段,我想使用正则表达式来匹配像 AVAGO 这样的值。但是,它给了我无法正确解析之类的错误,然后我尝试转义某些字符,但以下所有操作均无效:

MFR:AV\[A\]GO
MFR:AV/[A/]GO
MFR:AV/[A/]GO
MFR:"AV\[A\]GO"
MFR:"AV/[A/]GO"
MFR:"AV[A]GO"

现在,我开始问自己 q 参数是不是我可以放置正则表达式的正确位置,或者我什至不在球场上。

我还played 使用 Eclipse 中的 TestRegexpQuery 运行单元测试,显然,查询是不同类型的查询。如何让正则表达式在 GUI 中工作?

【问题讨论】:

  • 试试MFR:AV\\[A\\]GO
  • 您似乎需要指定要搜索的字段,例如:q=strfield:/MFR:AV\[A\]GO/。请阅读:stackoverflow.com/questions/14882188/…
  • @WiktorStribiżew 对不起先生。不工作
  • 那么,也许,如果卡斯滕的回答不起作用,试试MRF:/av%5Ba-x%5Dgo/

标签: java regex solr lucene


【解决方案1】:

您的问题是如何在 query screen 上使用 RegExpQuery。

您已经在 lucene 中使用过 RegExpQuery。

使用standard query parser 作为默认solr。标准查询解析器确实支持RegexpQuery,但正则表达式必须以斜杠字符/ 开头和结尾,例如MRF:/AV[A-X]GO/MRF:/av[a-x]go/

请注意,正则表达式必须与倒排索引中的标记匹配,而不是与原始单词匹配。

例如对于 FieldType "text_general",单词 AVAGO 将成为标记 avago,因此带有大写字母的 regExpr 将不匹配。

您可以使用 solr analysis screen 测试从单词(真实文本)到索引中相应标记的方式。

另请参阅:How to use regex for querying in Solr 4

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-02
    • 2023-04-10
    • 2013-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多