比如我在index_synonyms.txt同义词笔记本电脑,上网本,笔记本电脑
当上网本我想提高原文的同义词更多然后扩大用户搜索? 有没有办法在SynonymFilterFactory指定这个? 例如用原词两次,他的TF将更大
比如我在index_synonyms.txt同义词笔记本电脑,上网本,笔记本电脑
当上网本我想提高原文的同义词更多然后扩大用户搜索? 有没有办法在SynonymFilterFactory指定这个? 例如用原词两次,他的TF将更大
据我所知,目前还没有办法与现有SynonymFilterFactory做到这一点。 但是,以下是你可以用它来获得此行为的伎俩。
比方说,你的领域被称为title
。 创建另一个领域是这个副本,说title_synonyms
。 现在确保SynonymFilterFactory用作分析仅供title_synonyms
(您可以通过使用不同的字段类型为这两个领域做到这一点-比如text
和text_synonyms
)。 搜索在这两个领域,但提供更高的提振title
比title_synonyms
。
下面是样本字段类型定义:
<fieldType name="text" class="solr.TextField">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EnglishPorterFilterFactory" protected="protwords.txt"/>
<filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EnglishPorterFilterFactory" protected="protwords.txt"/>
<filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
</analyzer>
</fieldType>
<fieldType name="text_synonyms" class="solr.TextField">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.SynonymFilterFactory" synonyms="synonyms_index.txt" ignoreCase="true" expand="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EnglishPorterFilterFactory" protected="protwords.txt"/>
<filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.SynonymFilterFactory" synonyms="synonyms_query.txt" ignoreCase="true" expand="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EnglishPorterFilterFactory" protected="protwords.txt"/>
<filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
</analyzer>
</fieldType>
这里有样品的字段定义:
<field name="title" type="text" stored="false"
required="true" multiValued="true"/>
<field name="title_synonyms" type="text_synonyms" stored="false"
required="true" multiValued="true"/>
复制title
字段title_synonyms
:
<copyField source="title" dest="title_synonyms"/>
如果你正在使用dismax
,你可以给不同的提升这些领域的,像这样:
<str name="qf">title^10 title_synonyms^1</str>