我想在 fq 中实现 Regex 但以前从未实现过。
我的属性中有以下值,字段类型为“小写”:
Prop=company1@city1@state1@country1@高级分析化学家,芝加哥
我想根据正则表达式过滤结果。正则表达式应该与上面的内容匹配,如果
"company1@city1@state1@country1@"+ 正则表达式来匹配chicago and 分析性的最后一个@符号之后的任何地方。
我的要求是匹配最后一个 @ 之前的确切值,然后使用正则表达式来匹配剩余的字符串,因为我只想在最后一部分进行自由文本搜索。我无法将数据拆分为多列,因为它是多值字段。
我在代码中尝试了下面的正则表达式来匹配最后一个@之后的字符串。它在代码中运行良好,但不确定如何在 SOLR 中实现相同的功能
/([^@]+(?=.*IL)(?=.*chicago)(?=.*analytical))/ig
有人可以让我知道如何在 SOLR 中使用上述正则表达式吗?
Solr 中的正则表达式是通过搜索提供的q=field:/regex/
。这假设有问题的字段类型是一个字符串字段(或者至少是一个带有 KeywordTokenizer 的字段),因为匹配发生在令牌级别(如果您有一个分析字段,它可能会被分割成单独的令牌,并且不会匹配正则表达式)。
就像是q=field:/([^@]+(?=.*IL)(?=.*chicago)(?=.*analytical))/
可以工作,但是/i/
修饰符表示您不想关心大小写。我将使用带有 KeywordTokenizer 和 LowercaseFilter 的字段,然后使用小写正则表达式进行搜索:
<analyzer>
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory" />
</analyzer>
并查询:
q=field:/([^@]+(?=.*il)(?=.*chicago)(?=.*analytical))/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)