Lucene得分为Overlap排名

时间:2017-08-25 04:24:41

标签: lucene

我很擅长与Lucene合作并试图了解如何使用Lucene获得更简单的评分功能。

我的数据集中有对象,每个对象附加5-10个术语。 Lucene默认使用TFIDF相似性来对对象进行排名。

TFIDF没有意义,因为我的数据不会改变术语频率。如何更改默认评分函数,以便根据重叠关键字进行排名?

Doc1 = {system engineering artificial intelligence}

Doc2 = {architecture logic programming}

Doc3 = {sytem architecture engineering}

对于查询Query = {system architecture},我希望排名Doc3的排名高于Doc1Doc2

1 个答案:

答案 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的排名将高于doc1doc2,但是应该使用的子句也可以对其他文档进行排名。