有可能忽略lucene文件提升?

时间:2011-09-23 09:14:10

标签: java search lucene

我正在寻找一种方法告诉lucene搜索者忽略某些查询的文档提升?

在我们的搜索结果中,我们通常使用由索引编制的文档年龄计算的显性提升因子(索引每晚重建)。

现在,我正在寻找一种提供搜索功能的方式,它忽略了年龄,但却发现无法覆盖/忽略文档提升。

致以最诚挚的问候,

亚历

3 个答案:

答案 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 可以控制返回的值(默认分数或字段中的计算值)