2012-04-16 68 views
0

希望有人能帮助引导我对这个问题SOLR正确的方向相匹配的关键字和排序模式...如何构建SOLR查询,并通过外部关键字排名

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

想象一下,最终用户正在纽约市(位置:“纽约市”)寻找一家作为'免费wifi'和'游泳池'的酒店。理想情况下,搜索结果是在纽约的酒店有'免费wifi'和'游泳池'的最高评级。希望是有道理的吗?任何人都可以发送我的SOLR功能的方向,将允许执行这种类型的查询?

感谢。

回答

0

我会用edismax处理程序,并在两个部分做到这一点。

首先,旅馆里有一个游泳池?要么ü选择具有多个值的字段,因此您可以搜索设施:游泳池,设施:健身房等,或使用一组布尔字段,pool:True,gym:True。

其次,有一个领域的评级,并使用提升功能,以提高每个评级。得分将乘以提升。我已经使用了max()来确保零或负的评分不会导致问题。下面是一个简单的定义,将进入请求处理程序配置solrconfig.xml中:

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

产品()接受多个ARGS,所以你可以不断加入他们。

+0

谢谢Walter。我不完全确定自己完全理解,但让我研究一下你在答案中所说的内容,然后试一试! – scott 2012-04-17 19:26:32

+0

嗨沃尔特。我通读了SOLR docs等人(我是SOLR新手;-),现在明白你的建议。我有一个后续问题:如果设施列表很长,您会改变方法吗?我担心在SOLR中运行诸如 product(a_rating,b_rating,... zzzz_rating)等任何潜在的性能瓶颈。有几百个独特的设施和数十万个酒店的总搜索数据集。预先感谢您的任何建议! – scott 2012-04-20 21:51:03