如何通过外部关键字排名构建匹配关键字和排序的SOLR查询和模式

时间:2012-04-16 15:50:57

标签: solr

希望有人可以帮助指导我在这个SOLR问题的正确方向......

我有一个包含酒店功能和评级的数据集。功能的例子是'游泳池','健身房','免费wifi'。每个功能的评级在1到10之间。我想使用SOLR查询这些功能/评级对以及其他一些与酒店相关的标准,如“酒店名称”或“位置”,以便最匹配和最高的酒店评分功能会显示在搜索结果的顶部。这是一个例子:

想象一下,最终用户正在纽约市(位置:“纽约市”)搜索“免费wifi”和“游泳池”的酒店。理想情况下,搜索结果顶部的匹配是酒店拥有“免费wifi”和“游泳池”且收视率最高的纽约市。希望有意义吗?任何人都可以向我发送SOLR功能的方向,以便执行此类查询吗?

感谢。

1 个答案:

答案 0 :(得分:0)

我会使用edismax处理程序并分两部分完成。

首先,酒店有游泳池吗?要么使用具有多个值的字段,那么您可以搜索便利设施:游泳池,设施:健身房等,或使用一组布尔字段,池:True,健身房:True。

其次,有一个评级字段,并使用提升功能来提升每个评级。分数将乘以提升。我使用了max()来确保零或负等级不会导致问题。下面是一个示例定义,它将进入solrconfig.xml中的请求处理程序配置:

<str name="boost">product(max(pool_rating,1),max(gym_rating,1))</str>

product()接受多个args,因此您可以继续添加它们。