我正在寻找一种方法告诉lucene搜索者忽略某些查询的文档提升?
在我们的搜索结果中,我们通常使用由索引编制的文档年龄计算的显性提升因子(索引每晚重建)。
现在,我正在寻找一种提供搜索功能的方式,它忽略了年龄,但却发现无法覆盖/忽略文档提升。
致以最诚挚的问候,
亚历
答案 0 :(得分:1)
你在寻找QueryParser能理解的东西吗?因为这根本不可能。
您在代码中的某处添加了提升,默认情况下Lucene不会这样做。你必须删除这段额外的代码,或者让它成为可选代码以忽略增强。
答案 1 :(得分:1)
http://lucene.apache.org/java/3_0_0/api/core/org/apache/lucene/search/Similarity.html
从第6点开始,我认为在搜索时无法忽略提升:
norm(t,d)封装了一些(索引时间)增强和长度因子:
- 文档提升 - 在添加之前调用doc.setBoost()进行设置 文件到索引。
- 字段提升 - 通过在添加之前调用field.setBoost()来设置 字段到文档。
- lengthNorm(field) - 将文档添加到。时计算 索引根据该字段中的令牌数量而定 文档,以便较短的字段对分数贡献更多。 LengthNorm由索引时生效的Similarity类计算。
将文档添加到索引时,以上所有因素都是 乘以。如果文档有多个具有相同名称的字段, 所有他们的提升成倍增加:
(...)
最后,请注意搜索时间为时已晚,无法修改此标准部分 得分,例如通过使用不同的相似性进行搜索。
答案 2 :(得分:0)
您可以将其存储在新字段中,并通过实施 CustomScoreQuery + CustomScoreProvider ,而不是将计算得分存储为 boost 可以控制返回的值(默认分数或字段中的计算值)