solr 中的自动完成功能很受欢迎
Posted
技术标签:
【中文标题】solr 中的自动完成功能很受欢迎【英文标题】:Autocomplete in solr with popularity 【发布时间】:2014-12-05 22:27:34 【问题描述】:我现在正在使用 solr 自动完成和搜索功能,我想使用搜索词的流行度对自动完成建议进行排名。
例如,如果“usb”上周被搜索了 10 次,而“user”上周被搜索了 100 次,那么在输入“us”时,user 的排名应该高于 usb。
有没有办法满足这个要求?谢谢
【问题讨论】:
【参考方案1】:简而言之,您需要使用索引时间提升来提升“搜索查询索引”的值 - 并定期刷新它。
让您有一个所有搜索查询的索引。该索引可以创建为每个文档的索引时间提升,作为搜索次数的函数。提升因子可能只是搜索的次数。 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。
【讨论】:
以上是关于solr 中的自动完成功能很受欢迎的主要内容,如果未能解决你的问题,请参考以下文章