如何更改Lucene中的评分并使用向量空间模型而不是BM25?
发布于 2018-12-02 19:12:00
您可以通过使用IndexWriterConfig.setSimilarity和IndexSearcher.setSimilarity设置相似度来更改用于对文档进行评分的算法。请注意,在编写和搜索时,您应该使用相同的相似性实现,并且当您想尝试不同的相似性时,通常需要重新建立索引。
有许多开箱即用的Similarity implementations。
Lucene的旧的默认相似度是ClassicSimilarity,它是一个TFIDF (即。VSM)实现为documented here。
然而,根据你的评论,它不会实现你想要的东西。它也不会为您提供一种有意义的方式来归一化分数,或者建立有用的阈值,并且分数没有上限。
发布于 2020-02-04 08:48:41
要使用不同的相似性,请使用以下命令在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 similarityhttps://stackoverflow.com/questions/53564274
复制相似问题