【问题标题】:Why would a solr search be limited to 5 characters?为什么 solr 搜索限制为 5 个字符?
【发布时间】:2012-07-06 03:34:35
【问题描述】:

在名为 text 的字段上查询术语“人口”时:

.../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”过滤器。

【问题讨论】:

    标签: solr


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      Porter stemmer 源于 population populous popul popula popularpopul popul popul popula popular

      所以populationpopul 共享词干,但不与popula 共享。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多