在Lucene中使用向量空间模型代替BM25

时间:2018-11-30 20:12:34

标签: java solr lucene

如何更改Lucene的评分并使用向量空间模型代替BM25?

2 个答案:

答案 0 :(得分:1)

您可以通过使用IndexWriterConfig.setSimilarityIndexSearcher.setSimilarity设置“相似度”来更改用于对文档评分的算法。请注意,在编写和搜索时,您应该使用相同的相似性实现,并且通常需要在任何时候尝试尝试不同的相似性时都重新索引。

许多Similarity implementations可用。

Lucene的旧默认相似性是ClassicSimilarity,它是TFIDF(即VSM)实现,documented here

但是,它不会根据您的评论完成您要查找的内容。它也不会为您提供有意义的方式来标准化分数或建立有用的阈值,并且分数没有上限。

答案 1 :(得分:0)

要使用其他相似性,请使用以下方法在indexSearcher中设置相似性:

IndexSearcher indexSearcher;

IndexReader reader = DirectoryReader.open(indexDirectory);
indexSearcher = new IndexSearcher(reader);

...

indexSearcher.setSimilarity(new BM25Similarity());    //default in newer versions and above
//or
indexSearcher.setSimilarity(new ClassicSimilarity());
//or any other similarity