我有兴趣了解更多关于Lucene查询得分的更具体的信息。在他们的文档中,他们提到了VSM。我熟悉VSM,但它似乎与他们所允许的查询类型不一致。了解Lucene查询
我尝试通过BooleanScorer2和BooleanWeight的源代码,并没有真正有效。
我的问题是,有人可以通过执行BooleanScorer来解释它如何组合查询。
另外,有没有办法简单地发出几个条款,只是得到这些条款的原始tf.idf分数,它在文档中描述的方式?
我有兴趣了解更多关于Lucene查询得分的更具体的信息。在他们的文档中,他们提到了VSM。我熟悉VSM,但它似乎与他们所允许的查询类型不一致。了解Lucene查询
我尝试通过BooleanScorer2和BooleanWeight的源代码,并没有真正有效。
我的问题是,有人可以通过执行BooleanScorer来解释它如何组合查询。
另外,有没有办法简单地发出几个条款,只是得到这些条款的原始tf.idf分数,它在文档中描述的方式?
的地方,开始是http://lucene.apache.org/java/3_3_0/api/core/org/apache/lucene/search/Similarity.html
我认为这清除了你的不一致? Lucene结合了信息检索的布尔模型(BM)和信息检索的向量空间模型(VSM) - 由BM“批准”的文件由VSM评分。
接下来要看的是Searcher.explain,它可以给你一个字符串,解释如何计算(查询,文档)对的分数。
通过执行BooleanScorer来跟踪我可能很具有挑战性,我认为它最容易首先理解BooleanScorer2,它使用像ConjunctionScorer/DisjunctionSumScorer这样的子核心,并将BooleanScorer视为优化。
如果这让人困惑,那么在TermScorer上开始更简单。我个人看它“自下而上”反正:
一般来说,由于在所有发布的表单中,记分员负责两件事情:匹配和计算分数,因此很难追踪lucene记分文件的方式。在Lucene的主干(http://svn.apache.org/repos/asf/lucene/dev/trunk/)中,这些现在是分开的,这样一种相似性基本上对评分的所有方面负责,并且这是分开的从匹配。所以这里的API可能更容易理解,也许更难,但至少你可以参考许多其他评分模型(BM25,语言模型,随机性背离,基于信息的模型)的实现,如果你感到困惑:http://svn.apache.org/repos/asf/lucene/dev/branches/flexscoring/lucene/src/java/org/apache/lucene/search/similarities/
如果我问的话,请提供,但是有没有理由不接受RObert的答案?看起来他彻底解释了一切! – javanna