在名为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”过滤器。
答案 0 :(得分:0)
尝试Analysis页面来调试分析查询的方式,然后更容易看到问题。但它可能是由PorterStemFilter引起的,请尝试删除它。
答案 1 :(得分:0)
Porter stemmer来自population populous popul popula popular
到popul popul popul popula popular
所以population
和popul
分享干,但不归popula
。
如果要搜索指定的类型,请使用string
数据类型。请在本网站上搜索“Solr中的字符串与文本”问题。