【发布时间】:2021-09-01 23:11:24
【问题描述】:
我是 Solr 世界的新手,我有 Solr 7.7.2
我正在尝试进行通配符搜索,但没有返回任何结果。下面给出的是我为字段类型设置的索引、查询分析器。
示例文本: Solr 的标准查询解析器支持单个字词内的单个和多个字符通配符搜索。
在上面的示例文本中,我想搜索 standard* 以匹配单词 standard 感谢您对此的帮助。
<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100" multiValued="true">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
<filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.WordDelimiterGraphFilterFactory" preserveOriginal="1" splitOnCaseChange="0" splitOnNumerics="0"/>
<filter class="solr.FlattenGraphFilterFactory" />
<filter class="solr.WordDelimiterGraphFilterFactory" preserveOriginal="1"/>
<filter class="solr.FlattenGraphFilterFactory" />
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.PorterStemFilterFactory"/>
<filter class="solr.RemoveDuplicatesTokenFilterFactory" />
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
<filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.WordDelimiterGraphFilterFactory" preserveOriginal="1" splitOnCaseChange="0" splitOnNumerics="0"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.PorterStemFilterFactory"/>
<filter class="solr.RemoveDuplicatesTokenFilterFactory" />
</analyzer>
</fieldType>
【问题讨论】:
-
通配符将作用于字符串字段而不是文本字段
-
您好 Abhijith,感谢您的回复。但是简单的字符串字段类型也不起作用。字段值(索引)上的 standard 和字段值(查询)上的 standard* 不匹配。
-
修改后需要重启服务器...
-
我没有更改字段类型。只需使用管理门户中的分析屏幕并尝试通过将字段选择为 string 并在上方运行来进行检查
-
视情况而定。您要索引哪些文本以及如何匹配它?如果
standard是文本中的一个单词(即this is standard,只有一个WhitespaceTokenizer 和一个小写过滤器应该允许您执行field:standar*以匹配单个standard标记。对于更高级的处理,将需要一个NgramFilter
标签: solr