我对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": {}
}
提前感谢您的帮助。
答案 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"/>
答案 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"选项。我期望不需要将文档重写到索引的行为,但实际上该标志定义了该字段是否可在搜索结果中检索。因此,我只需要重新索引所有文档。
感谢您的帮助!