我正在关注 Solr quick start tutorial并启动并运行网络应用程序。我知道 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 中工作?
最佳答案
您的问题是如何在 query screen 上使用 RegExpQuery .
您已经在 lucene 中使用了 RegExpQuery。
作为默认 solr,使用 standard query parser 。标准查询解析器确实支持 RegexpQuery
,但 RegExp 必须以斜杠字符 /
开头和结尾,如 MRF:/AV[A-X]GO/
> 或 MRF:/av[a-x]go/
。
请注意,正则表达式必须与倒排索引中的标记匹配,而不是与原始单词匹配。
例如对于 FieldType“text_general”,单词 AVAGO
将成为标记 avago
,因此大写字母的 regExpr 将不匹配。
您可以使用 solr analysis screen 进行测试从单词(真实文本中)到索引中相应标记的方式。
关于java - Solr Webapp 正则表达式搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35728083/