我正试图在Lucene上实现BM25f评分系统。我需要根据我的需要对here进行原始实现进行一些小的更改,我在他获得平均字段长度和文档长度的部分迷路了...有人可以指导我如何或从何处获得它?如何在Lucene中获得平均字段长度和文档长度?
回答
你可以从文件领域相关TermVector
实例字段长度,但是这会增加你的索引大小。除非你买不起一个更大的指数,否则这可能是要走的路。当然,你仍然需要自己计算平均值,并将其存储在其他地方(或者可以将其存储在具有众所周知的外部标识的特殊文档中,只需在统计信息发生变化时更新)。
如果你可以将数据存储在指数之外,有一两件事你可以做的是算令牌时文档记号化,并存储计数平均。如果您的文档集合是静态的,只需在索引后将每个字段的值转储到文件&进程中。如果索引只需要添加更新,则可以存储文档数量和每个字段的平均长度,并重新计算平均值。如果文档将被删除,并且您需要准确的计数,则需要重新解析要删除的文档,以了解每个字段包含多少条款,或者如果您正在使用该条款,则需要从TermVector
获取长度。
可以说我不喜欢指数大小的增加,那么? – Shrinath 2011-05-23 10:01:48
如果不存储术语向量,则必须在索引时计算每个字段中术语的数量,并在某处存储这些计数或平均值。一个“特殊”文件是一种可能性。另一种可能性是使用某个数据库或键值存储来存储索引统计信息。不过,如果您添加或删除文档,请记住更新它们。当然,如果你的文件长度相近,那么稍微偏离一点就不会伤害BM25的统计数据。 – 2011-05-23 17:00:05
- 1. Elasticsearch,获取平均文档长度
- 2. GROUPBY获得平均长度名字
- 3. lucene文档长度4.0
- 4. 计算平均文档长度使用Lucene
- 5. 平均字长度.txt
- 6. 在Lucene 4中查找文档/字段长度
- 7. 平均单词长度和平均句子长度的Java代码
- 8. 如何在Solr/Lucene中定义字段长度?
- 9. ArrayList:获取最长字符串的长度,获取字符串的平均长度
- 10. 从频率词典获取字数和平均长度
- 11. 如何获得长度JavaScript表单文本字段
- 12. 如何获得字符串的长度[] []
- 13. 平均字长
- 14. LISP - 如何从嵌套列表中获取平均长度?
- 15. 如何获得长度a和b
- 16. Spark中的平均单词长度
- 17. 如何获得文件长度?
- 18. 如何获得.avi文件的长度
- 19. 如何获得列(Excel)中最长字符串的长度?
- 20. 长文本字段的最大长度
- 21. C#和Sqlite字段长度
- 22. 获得使用python的单词的平均长度减少
- 23. 长度文本字段
- 24. document.createElement文本字段长度
- 25. 长度和长度()在Java
- 26. 如何在IE中获得字段长度而不计占位符文本
- 27. 移动平均线移动长度
- 28. 可变长度VBA的平均行
- 29. 平均时间序列长度不同
- 30. 平均数据集长度不一
前段时间我浏览过这个问题,我猜这个实现计算了Lucene之外的平均字段和文档长度(例如在提交索引文档时)。据我所知Lucene没有这个功能(平均字段和文档长度)。 – 2011-05-19 15:50:08