我现在正在使用 solr 自动完成和搜索功能,我想使用搜索词的流行度对自动完成建议进行排名。
例如,如果 'usb' 上周被搜索了 10 次,而 'user' 上周被搜索了 100 次,那么当输入 'us' 时,user 的排名应该高于 usb。
有没有办法满足这个要求?谢谢
我现在正在使用 solr 自动完成和搜索功能,我想使用搜索词的流行度对自动完成建议进行排名。
例如,如果 'usb' 上周被搜索了 10 次,而 'user' 上周被搜索了 100 次,那么当输入 'us' 时,user 的排名应该高于 usb。
有没有办法满足这个要求?谢谢
简而言之,您需要使用索引时间提升来提升“搜索查询索引”的值 - 并定期刷新它。
让您有所有搜索查询的索引。该索引可以创建为每个文档的索引时间提升,作为搜索次数的函数。提升因子可能只是搜索的次数。 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。