在运行搜索之前,是否可以使用Query对象调整字段的提升? 我知道正确的方法是在索引编制过程中更改字段提升,但制作索引需要大约4天时间,并且只是想知道我现在可以做的快速破解。
我也尝试过对搜索查询的提升进行硬编码,即 AND字段(这是其他)^ 7
这是有效的,它将是它的结束,除了我想减少这部分查询的相关性, 我想要
AND field(这个是其他)^。1
但我得到空的结果。
感谢
答案 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)
为什么不用更高的价值来提升你想要的条款,并将你想要的那些条件保持为零?