0

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

4

2 回答 2

0

尝试分析页面来调试如何分析该查询,这样会更容易看到问题。但它可能是由 PorterStemFilter 引起的,请尝试将其删除。

于 2012-07-05T18:08:29.503 回答
0

Porterpopulation populous popul popula popular词干分析器源于popul popul popul popula popular

所以populationand populshare stem,但不是 with popula

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

于 2012-07-09T05:24:45.890 回答