为什么solr搜索限制为5个字符?

时间:2012-07-05 17:15:38

标签: solr

在名为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”过滤器。

2 个答案:

答案 0 :(得分:0)

尝试Analysis页面来调试分析查询的方式,然后更容易看到问题。但它可能是由PorterStemFilter引起的,请尝试删除它。

答案 1 :(得分:0)

Porter stemmer来自population populous popul popula popularpopul popul popul popula popular

所以populationpopul分享干,但不归popula

如果要搜索指定的类型,请使用string数据类型。请在本网站上搜索“Solr中的字符串与文本”问题。