gpt4 book ai didi

elasticsearch - 赋予 SynonymFilterFactory 术语权重

转载 作者:行者123 更新时间:2023-12-02 22:21:48 28 4
gpt4 key购买 nike

Solr中有什么方法可以给同义词赋予权重? (由 SynonymFilterFactory 生成)

问题的较长版本/一些背景:

我们希望为 SynonymFilterFactory 注入(inject)的同义词/术语赋予较小的权重.
所以精确匹配会更高score .

第一个用例只是为所有同义词赋予一个静态权重
如果搜索时间通过同义词匹配,它将具有一定的(较低的)
重量比完全匹配。

在文档中找不到这个。

Solr 是否有办法为 SynonymFilterFactory 生成的术语分配权重? ?

任何指针高度赞赏。

PS。另一个用例是使用特定权重微调每个同义词
对于每个特定的同义词(即 synonyms="synonyms.txt"将有 3
列而不是 2)。目前似乎不可能,所以也许只是静态的
上述所有同义词的权重都是可能的。

最佳答案

与 Lucene 的大多数情况一样,解决方案是使用多个字段 - 一个扩展同义词的字段,一个不扩展同义词。这样,您可以决定是否完全启用同义词进行搜索,或者您可以使用不同的权重对不同字段中的匹配进行评分 - 您可以根据您的查询调整这些权重。在 Solr 中,您使用了 copyField将相同的内容索引到两个字段中,然后您可以在使用带有 field^5 field_with_synonyms 的 edismax 时调整权重没有同义词的命中率比有同义词的命中率高五倍。
如果您真的想在一个单一的字段中进行操作,则需要更脆弱和自定义的设置,您可以在其中 can use payloads attached to each token手动对每个 token 进行不同的评分,但这是一个更高级的用例,不会完全适合所有其他功能。它会解决你的PS不过,用例。我还建议查看 one of the presentations from Lucene/Solr Revolution关于有效载荷评分的用例。
使用两个字段是简单的方法,使用有效负载是更灵活但也更高级的方法。

Returns the float value computed from the decoded payloads of the term specified.


返回值是使用已解码有效负载的最小值、最大值或平均值计算的。可以使用特殊的第一个函数代替其他函数,以缩短术语枚举并仅返回第一个术语的解码有效载荷。

The field specified must have float or integer payload encoding capability (via DelimitedPayloadTokenFilter or NumericPayloadTokenFilter). If no payload is found for the term, the default value is returned.

payload(field_name,term): default value is 0.0, average function is used.

payload(field_name,term,default_value): default value can be a constant, field name, or another float returning function. average function used.

payload(field_name,term,default_value,function): function values can be min, max, average, or first.


与 DelimitedPayloadTokenFilter 一起使用的文件格式为 token|payload并允许您附加任何数值作为该 token 的“有效负载”。

关于elasticsearch - 赋予 SynonymFilterFactory 术语权重,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56839428/

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