gpt4 book ai didi

ruby-on-rails - pg_search : how to prioritize exact word matches?

转载 作者:行者123 更新时间:2023-11-29 11:25:52 28 4
gpt4 key购买 nike

问题:当搜索与搜索查询相似的词多次出现的文本时,它们比具有一次完全匹配的文本获得更高的排名。

示例:假设搜索查询是“生产力”,那么“有机产品的生产”的排名高于“劳动力” productivity” 只是因为它包含两个相似的词,尽管没有完全匹配的词。

问题:对完全匹配的记录进行优先排序的最佳方法是什么?

这是我的 pg_scope:

  pg_search_scope :search,
:against => {
:title => 'A',
:search_string => 'B'
},
:using => {
:tsearch => {
:dictionary => 'english',
:any_word => 'true'
}
}

谢谢。

最佳答案

如果您可以操纵搜索查询,请查看 cover density ranking (ts_rank_cd() instead of ts_rank()) and its normalization parameter .

SELECT v, ts_rank(to_tsvector('english', v), to_tsquery('english', 'productivity')) rank,
ts_rank_cd(to_tsvector('english', v), to_tsquery('english', 'productivity')) rankcd,
ts_rank_cd(to_tsvector('english', v), to_tsquery('english', 'productivity'), 4) rankcd4,
ts_rank_cd(to_tsvector('english', v), to_tsquery('english', 'productivity'), 6) rankcd6
FROM (
VALUES ('production of organic products'::TEXT),
('labour productivity'),
('labour productivity with more unrelated words'),
('labour productivity with more unrelated words and again production'),
('production of productivity'),
('product production')
) d(v)

SQLFiddle

但是,我不确定如何使用自定义规范化设置pg_search_scope

或者,您可能对 trigram 感兴趣searches此外,它们还提供更准确(逐个字符)的结果。

关于ruby-on-rails - pg_search : how to prioritize exact word matches?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23980204/

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