在名为 text 的字段上查询术语“population”时:
.../solr/select?q=text:(pop*)
返回包含单词“population”的结果。
但是,如果星号前有超过 5 个字符,则不返回任何内容:
.../solr/select?q=text:(popula*)
然而,这有效:
.../solr/select?q=text:(population)
就像这样(我不知道为什么):
.../solr/select?q=text:(popul)
没有星号,只有 5 个字符有效,全文有效。
它不仅限于“人口”,似乎也适用于其他词(我尝试了“分子”)。
为什么限制为 5 个字符?
我下载的 solr 版本没有太大变化。
字段“text”具有类型“text_en_splitting”。
“text_en_splitting”有两个分析器,一个是“index”类型,一个是“query”类型。我一个都没碰过。
查询分析器如下所示:
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.StopFilterFactory"
ignoreCase="true"
words="lang/stopwords_en.txt"
enablePositionIncrements="true"
/>
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
<filter class="solr.PorterStemFilterFactory"/>
</analyzer>
索引分析器看起来相同,但缺少“solr.SynonymFilterFactory”过滤器。