2017-08-25 59 views
0

我是新来的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排名。

+0

你正在使用什么类型的查询? – Mysterion

+0

一个简单的查询,其中有一个或两个术语,比如'系统体系结构'上面 – kami

+0

可能更精确?它是短语查询?用布尔子句进行长期查询? – Mysterion

回答

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排名更高,但应条款的性质将允许其他排序文件以及。