0

我现在正在使用 solr 自动完成和搜索功能,我想使用搜索词的流行度对自动完成建议进行排名。

例如,如果 'usb' 上周被搜索了 10 次,而 'user' 上周被搜索了 100 次,那么当输入 'us' 时,user 的排名应该高于 usb。

有没有办法满足这个要求?谢谢

4

1 回答 1

0

简而言之,您需要使用索引时间提升来提升“搜索查询索引”的值 - 并定期刷新它。

让您有所有搜索查询的索引。该索引可以创建为每个文档的索引时间提升,作为搜索次数的函数。提升因子可能只是搜索的次数。 https://wiki.apache.org/solr/SolrRelevancyFAQ#index-time_boosts

例如。搜索查询 - 'foo', 'foo', 'bar' , 'bar', 'bar' , 'abcd' 将被添加到新索引中,'foo' 的提升为 2,'bar' 的提升为 3,' abcd' 与 1。

您可以对此索引进行动态搜索(以:开头) - 并将键入的提前字符添加到查询中。文档分数反映了索引时间的提升。

例如。:将首先返回得分最高的文档。用户键入“f”后 - 术语“f*”返回“foo”高于其他术语,因为它具有更高的索引时间提升。

我不知道“术语组件”在这里的行为。它的分数基于词频——而不是基于索引时间提升。

随着您积累更多搜索请求,您必须使用反映较新搜索计数的更新提升值重新索引。

例如。如果有一个新的搜索'bar' - 然后你重新索引'bar'文档,提升4。

于 2014-10-11T20:07:52.307 回答