我刚开始使用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
。
发布于 2017-09-04 15:21:08
我可以建议使用这样的东西:
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
,但should子句的性质也允许对其他文档进行排名。
https://stackoverflow.com/questions/45874420
复制相似问题