gpt4 book ai didi

solr - 有没有办法在使用 Solr 同义词时更多地提升原始术语?

转载 作者:行者123 更新时间:2023-12-04 02:15:40 24 4
gpt4 key购买 nike

例如我有同义词
笔记本电脑,上网本,笔记本
在 index_synonyms.txt 中

当用户搜索上网本时,我想提升原始文本,然后通过同义词扩展?
有没有办法在 SynonymFilterFactory 中指定它?
例如使用原始术语两次所以他的TF会更大

最佳答案

据我所知,现有的 SynonymFilterFactory 无法做到这一点。但以下是您可以用来获得此行为的技巧。

假设您的字段名为 title .创建另一个字段,它是此副本的副本,例如 title_synonyms .现在确保 SynonymFilterFactory 仅用作 title_synonyms 的分析器(您可以通过为两个字段使用不同的字段类型来实现这一点——比如 texttext_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>

关于solr - 有没有办法在使用 Solr 同义词时更多地提升原始术语?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10660632/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com