Solr并不建议使用内部点名称

时间:2016-11-22 14:08:08

标签: solr solr4 facet

我对solr的建议条款有些问题。

我已将标题编入索引,例如。 " foo.a123"," foo.a456" ...如果搜索" foo" Solr给我回复foo作为建议,但如果我搜索" foo.a"没有给出任何建议。如果我搜索,该建议正常 " foo a"。

我使用以下配置:

<fieldType name="textSpell" class="solr.TextField" positionIncrementGap="100" omitNorms="true">
        <analyzer type="index">
            <tokenizer class="solr.WhitespaceTokenizerFactory"/>

            <filter class="solr.LowerCaseFilterFactory"/>
            <filter class="solr.SynonymFilterFactory" synonyms="english/synonyms.txt" ignoreCase="true" expand="true"/>
            <filter class="solr.StopFilterFactory" ignoreCase="true" words="english/stopwords.txt"/>
            <filter class="solr.StandardFilterFactory" />
            <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
        </analyzer>
        <analyzer type="query">
            <tokenizer class="solr.WhitespaceTokenizerFactory" />

            <filter class="solr.LowerCaseFilterFactory"/>
            <filter class="solr.StopFilterFactory" ignoreCase="true" words="english/stopwords.txt"/>
            <filter class="solr.StandardFilterFactory" />
            <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
        </analyzer>
    </fieldType>

提交的&#39;拼写&#39;正在使用textSpell配置

<field name="spell" type="textSpell" indexed="true" stored="false" multiValued="true"/>
<copyField source="title" dest="spell"/>
<copyField source="subTitle" dest="spell"/>
<copyField source="content" dest="spell"/>

&#39;拼写&#39;字段用作facet.field,此示例中的facet.prefix将是&#39; foo.a&#39;

"facet_counts": {
"facet_queries": {},
"facet_fields": {
  "spell": []
},
"facet_dates": {},
"facet_ranges": {}
}

提前感谢您的帮助。

3 个答案:

答案 0 :(得分:0)

只需使用wordDelimiter过滤器https://lucene.apache.org/core/4_4_0/analyzers-common/org/apache/lucene/analysis/miscellaneous/WordDelimiterFilter.html

 <filter class="solr.WordDelimiterFilterFactory" types="wdfftypes.txt" generateNumberParts="0" stemEnglishPossessive="0" splitOnCaseChange="1" preserveOriginal="1" catenateAll="1" catenateWords="1" catenateNumbers="1" generateWordParts="1" splitOnNumerics="1"/>

enter image description here

答案 1 :(得分:0)

solr.StandardFilterFactory
  

当luceneMatchVersion(在solrconfig.xml中)高于“3.1”时,此过滤器在Solr中不再可用。

在Solr 4.10.4中有<luceneMatchVersion>4.10.4</luceneMatchVersion>

所以更改查询分析器中的过滤器

答案 2 :(得分:0)

想出来,配置工作如上所述。 wordDelimeter也可以使用,但对我的情况来说不是必需的。 (StandardFilterFactory什么都不做。)

我完全误解了提交配置中的stored="false"选项。我期望不需要将文档重写到索引的行为,但实际上该标志定义了该字段是否可在搜索结果中检索。因此,我只需要重新索引所有文档。

感谢您的帮助!