![](/img/trans.png)
[英]getting the document length during query evaluation apache lucene 5.3
[英]Finding document/field length in Lucene 4
我希望能夠訪問索引后文檔的特定字段的長度(就而言)。 最好,如果有沒有重新索引的方法,我想這樣做。 但是,如果以某種方式重新索引可以輕松訪問此值,那也將起作用。
http://blog.mikemccandless.com/2012/03/new-index-statistics-in-lucene-40.html
該鏈接(稍微向下滾動並找到提到的length )談到在索引時訪問該值。 我希望能夠在索引后這樣做。 該鏈接還討論了將值保存為 doc 值,但它沒有給出如何這樣做的示例。
如果有人可以提供保存文檔長度或在索引后訪問它的示例,那將非常有幫助。 謝謝。
文章中提到的統計數據是指FieldInvertState 。 一旦你有了它,如何獲得你正在尋找的統計數據應該是相當簡單的(只需調用getLength
、 getUniquetermCount
或任何你需要的)。
FieldInvertState 被傳遞到Similarity
,特別是調用Similarity.computeNorm
。 規范值是在索引時計算和存儲的,而不是在查詢時計算,因此有效利用它需要您重新索引。
使用它的典型方法是創建自定義Similarity
,可能擴展DefaultSimilarity
。 簡單地覆蓋DefaultSimilarity
的lengthNorm
方法將是最簡單的方法。 它的標准實現是:
return (float)(1.0 / Math.sqrt(numTerms));
你可以用你喜歡的任何東西覆蓋它。
這將有助於根據自定義的基於長度的計算來調整評分。 如果這不是您要查找的內容,而是需要能夠僅獲取該信息,我認為僅存儲和字段,並從獲取Document
時返回的字段值獲取長度將是最簡單的實現。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.