我很擅长与Lucene合作并试图了解如何使用Lucene获得更简单的评分功能。
我的数据集中有对象,每个对象附加5-10个术语。 Lucene默认使用TFIDF相似性来对对象进行排名。
TFIDF没有意义,因为我的数据不会改变术语频率。如何更改默认评分函数,以便根据重叠关键字进行排名?
Doc1 = {system engineering artificial intelligence}
Doc2 = {architecture logic programming}
Doc3 = {sytem architecture engineering}
对于查询Query = {system architecture}
,我希望排名Doc3
的排名高于Doc1
和Doc2
。
答案 0 :(得分:0)
我可以建议使用这样的东西:
Query query = new BooleanQuery.Builder()
.add(new TermQuery(new Term("text", "system")), Occur.SHOULD)
.add(new TermQuery(new Term("text", "architecture")), Occur.SHOULD)
.build();
在这种情况下,doc3
的排名将高于doc1
和doc2
,但是应该使用的子句也可以对其他文档进行排名。