【问题标题】:how to construct SOLR query and schema that matches keywords and sorts by external keyword ranking如何构造与关键字匹配并按外部关键字排名排序的 SOLR 查询和模式
【发布时间】:2012-04-16 15:50:57
【问题描述】:

希望有人可以帮助我在这个 SOLR 问题上朝着正确的方向前进......

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

假设最终用户正在搜索纽约市(位置:“纽约市”)的酒店,该酒店为“免费 wifi”和“游泳池”。理想情况下,搜索结果顶部的匹配项是位于纽约市的“免费 wifi”和“游泳池”评分最高。希望这是有道理的吗?谁能给我发一下 SOLR 功能的方向,以允许执行此类查询?

谢谢。

【问题讨论】:

    标签: solr


    【解决方案1】:

    我会使用 edismax 处理程序并分两部分进行。

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

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

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

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

    【讨论】:

    • 谢谢沃尔特。我不完全确定我完全理解,但让我研究一下你在回答中所说的内容并试一试!
    • 嗨沃尔特。我通读了 SOLR 文档等(我是 SOLR 新手 ;-),现在明白了你的建议。我有一个后续问题:如果设施清单很长,你会改变方法吗?我担心的是在 SOLR 中运行诸如 product(a_rating, b_rating, ... zzzz_rating) 之类的任何潜在性能瓶颈。有数百个独特的设施和数十万家酒店的总搜索数据集。提前感谢您的任何建议!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-08
    • 2020-10-22
    • 1970-01-01
    相关资源
    最近更新 更多