lucene在搜索时设置了字段

时间:2009-08-28 19:24:47

标签: java lucene

在运行搜索之前,是否可以使用Query对象调整字段的提升? 我知道正确的方法是在索引编制过程中更改字段提升,但制作索引需要大约4天时间,并且只是想知道我现在可以做的快速破解。

我也尝试过对搜索查询的提升进行硬编码,即 AND字段(这是其他)^ 7

这是有效的,它将是它的结束,除了我想减少这部分查询的相关性, 我想要

AND field(这个是其他)^。1

但我得到空的结果。

感谢

2 个答案:

答案 0 :(得分:2)

您可以扩展相似性,在搜索器中,使用

setSimilarity(Similarity)

通过扩展相似性,您可以根据需要调整Lucene中的评分机制。

编辑:

更具体地说,您可以覆盖Similarity(或其子类)中的lengthNorm方法:

public float lengthNorm(String fieldName, int numTokens){
    return fieldWeights.get(fieldName)*super.lengthNorm(fieldName, numTokens);
}

fieldWeights可以是Map属性,您可以在其中指定要附加到每个字段的权重。如果您在某处保留对fieldWeights的引用,则可以在执行搜索之前将字段权重更改为您想要的任何内容(但是,一次只对一个查询执行此操作,以进行实验)。

答案 1 :(得分:0)

为什么不用更高的价值来提升你想要的条款,并将你想要的那些条件保持为零?