簡體   English   中英

在 Lucene 4 中查找文檔/字段長度

[英]Finding document/field length in Lucene 4

我希望能夠訪問索引后文檔的特定字段的長度(就而言)。 最好,如果有沒有重新索引的方法,我想這樣做。 但是,如果以某種方式重新索引可以輕松訪問此值,那也將起作用。

http://blog.mikemccandless.com/2012/03/new-index-statistics-in-lucene-40.html

該鏈接(稍微向下滾動並找到提到的length )談到在索引時訪問該值。 我希望能夠在索引后這樣做。 該鏈接還討論了將值保存為 doc 值,但它沒有給出如何這樣做的示例。

如果有人可以提供保存文檔長度或在索引后訪問它的示例,那將非常有幫助。 謝謝。

文章中提到的統計數據是指FieldInvertState 一旦你有了它,如何獲得你正在尋找的統計數據應該是相當簡單的(只需調用getLengthgetUniquetermCount或任何你需要的)。

FieldInvertState 被傳遞到Similarity ,特別是調用Similarity.computeNorm 規范值是在索引時計算和存儲的,而不是在查詢時計算,因此有效利用它需要您重新索引。

使用它的典型方法是創建自定義Similarity ,可能擴展DefaultSimilarity 簡單地覆蓋DefaultSimilaritylengthNorm方法將是最簡單的方法。 它的標准實現是:

return (float)(1.0 / Math.sqrt(numTerms));

你可以用你喜歡的任何東西覆蓋它。

這將有助於根據自定義的基於長度的計算來調整評分。 如果這不是您要查找的內容,而是需要能夠僅獲取該信息,我認為僅存儲和字段,並從獲取Document時返回的字段值獲取長度將是最簡單的實現。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM