【问题标题】:Boost search results in Lucene via the presence of a field value通过字段值的存在提升 Lucene 中的搜索结果
【发布时间】:2018-02-28 12:02:42
【问题描述】:

我通过 Kentico 使用 Lucene.net。我正在尝试提升在某个领域具有特定价值的结果。例如:

myfield:"myvalue"^2

不幸的是,这被视为搜索词并改变了分数(通过tfidf 等)。

有没有一种方法可以根据值的存在来提升结果,但不包括该值作为搜索词?

更新

所以我想提高仅在该字段中包含该值的记录的分数,它不是任何搜索值。

失败了,因为我实际上使用了两个索引,我可以对特定索引应用提升吗?例如,索引 1 中的项目总体得分略高于索引 2 中的项目

【问题讨论】:

    标签: lucene lucene.net kentico


    【解决方案1】:

    如果您在“搜索条件”中添加了此字段,那么在后台它会在值中添加“+”,因此 lucene 正在渲染:

    +(myfield:"myvalue"^2)
    

    然后需要该字段。

    我相信(你必须测试)如果你添加一个智能搜索过滤器,将值设置为myfield:"myValue"^2,然后将“过滤器是有条件的”设置为 false,这应该正确地将你的字段添加到 lucene 中boost,然后用一些<div style="display:none"></div> 包裹过滤器以隐藏它。

    将其指向您的结果,看看它是否有效!

    【讨论】:

    • 我实际上是在后端执行此代码,因此我可以控制生成的确切语法。问题是即使包含myfield:"myvalue"(没有提升),它仍然会改变得分。它的说法是myvalue在那个栏目里很少见,如果是的话,就给它加分吧。我真的只是想提高该记录的分数,因为它比没有指定的提升值的记录具有该值。
    • 您可以进行多次提升,将主要搜索设置为提升 2,然后将其设置为提升 0.5,然后进行调整直到达到您想要的效果。
    • 你是说实际上没有一种方法可以满足我的需要吗?通过存在值来提升结果,但将该值作为搜索值进行评分?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-06
    • 1970-01-01
    • 1970-01-01
    • 2011-12-26
    相关资源
    最近更新 更多