我有一个查询和一组文件。我需要根据与tf-idf的余弦相似性对这些文档进行排名。有人可以告诉我,我可以从Lucene那里得到什么支持来计算它?我可以直接从Lucene计算出哪些参数(我可以直接通过lucene中的某个方法得到tf,idf吗?)以及如何用Lucene计算余弦相似度(如果我传递查询的两个向量,那么是否存在直接返回余弦相似性的函数文件?)
提前完成
答案 0 :(得分:4)
Lucene已经使用了pimped版本的余弦相似度,所以如果你需要原始CS本身,它可能是可行的。我推荐讨论Lucene得分的official page。
如果你想自己提取这些信息,这将是 tf 步骤的概述:
IndexReader
; maxDoc()
; getTermFreqVector(doc, fieldName);
tfv.getTerms()
和tfv.getTermFrequencies()
。对于 docFreq ,请使用IndexReader.terms()
并迭代此调用termEnum.docFreq()
。