我正試圖在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