可以忽略lucene文档boost吗?

发布于 2024-12-06 06:37:29 字数 175 浏览 1 评论 0原文

我正在寻找一种方法来告诉 lucene 搜索器忽略某些查询的文档增强?

在我们的搜索结果中,我们通常在索引时使用根据文档年龄计算的主导提升因子(索引每晚重建)。

现在,我正在寻找一种提供忽略年龄的搜索功能的方法,但尚未找到覆盖/忽略文档提升的方法。

最好的问候,

亚历克斯

I am looking for a way to tell the lucene searcher to ignore document boosting on certain queries?

In our search results we usually work with a dominant boost-factor calculated by the age of a document while indexing (the index is rebuild nightly).

Now, I am looking for a way offer search-functionality which ignores the age, but found yet no way to override/ignore the document boost.

Best regards,

Alex

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

冰火雁神 2024-12-13 06:37:29

您是否正在寻找 QueryParser 能够理解的内容?因为那根本不可能。

您在代码中的某个位置添加了 boost,默认情况下 Lucene 不会这样做。您必须删除这段额外的代码,或者将其设为可选,以便忽略提升。

Are you looking for something the QueryParser would understand? Because that is simply not possible.

You're adding the boost somewhere in your code, it is not done by Lucene by default. You'll have to remove this additional piece of code, or make it optional in order to ignore the boost.

并安 2024-12-13 06:37:29

http://lucene.apache.org /java/3_0_0/api/core/org/apache/lucene/search/Similarity.html

从第6点开始,我认为在搜索时忽略提升是不可能的:

norm(t,d) 封装了一些(索引时间)提升和长度因子:

  • 文档增强 - 在添加之前通过调用 doc.setBoost() 设置
    将文档添加到索引。
  • Field boost - 通过在添加之前调用 field.setBoost() 来设置
    字段到文档。
  • lengthNorm(field) - 当文档添加到
    根据该字段在该字段中的标记数量进行索引
    文档,以便较短的字段对分数的贡献更大。
    LengthNorm 由索引时有效的相似性类计算。

当文档被添加到索引中时,上述所有因素都会被
乘以。
如果文档有多个同名字段,
他们所有的提升都会相乘:

(...)

最后,请注意,搜索时间已经太晚,无法修改此规范部分
评分,例如通过使用不同的相似度进行搜索。

http://lucene.apache.org/java/3_0_0/api/core/org/apache/lucene/search/Similarity.html

From the point 6, I reckon it is impossible to ignore boosts at search time:

norm(t,d) encapsulates a few (indexing time) boost and length factors:

  • Document boost - set by calling doc.setBoost() before adding the
    document to the index.
  • Field boost - set by calling field.setBoost() before adding the
    field to a document.
  • lengthNorm(field) - computed when the document is added to the
    index in accordance with the number of tokens of this field in the
    document, so that shorter fields contribute more to the score.
    LengthNorm is computed by the Similarity class in effect at indexing.

When a document is added to the index, all the above factors are
multiplied.
If the document has multiple fields with the same name,
all their boosts are multiplied together:

(...)

Last, note that search time is too late to modify this norm part of
scoring, e.g. by using a different Similarity for search.

等数载,海棠开 2024-12-13 06:37:29

您可以将计算出的分数存储在新字段中,而不是将其存储为 boost,并且通过实施 CustomScoreQuery + CustomScoreProvider 您可以控制哪个返回值(默认分数或您在字段中计算的分数)

Instead of storing your calculated-score as boost, you can store it in a new field, and by implementing CustomScoreQuery + CustomScoreProvider you can control which value(default score or your calculated-one in the field) to return

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文