2010-09-21 34 views
5

我開始致力於基於lucene.net引擎的恢復檢索(文檔)組件。它的偉大工程,並獲取文檔和得分它的基礎上的僅根據文檔在lucene中有更多詞條計算得分

的想法背後的VSM是更 次查詢檢索詞出現在相對於 倍術語出現在數 文件所有 文件中的集合中,更多 相關的那個文件就是 查詢。

Lucene的實用功能評分從下面的。

score(q,d)=coord(q,d)·queryNorm(q)· ∑(tf(t in d) ·idf(t)2 · t.getBoost() · norm(t,d)) 
            t in q 
在此

  • TF(噸d)關聯到的術語的頻率,定義爲次項的數目t

    出現在當前得分文檔d。給定字詞出現次數更多的文檔得到的分數更高

  • idf(t)表示反向文檔頻率。該值與docFreq的倒數(出現術語t的文檔數)相關。這意味着較少的術語對總分的貢獻更高。

這是非常大的確實在大多數的情況,但由於fieldnorm計算結果不準確

fieldnorm又名「字段長度規範」值代表的那場在文檔的長度(所以較短的字段會自動提升)。

由於這個原因,我們沒有得到準確的結果。 說一個例子,我得到了10000個文件,其中3000個文件有java和oracle關鍵字。每個文檔的出現次數都不相同。

  • 假定文檔A獲得了10的java 20預言中1000個字和文檔B獲得了2的java之間50個字
  • 如果是搜索查詢「java和預言」,lucene的具有高分數返回文檔B 2預言由於長度歸一化而導致的長度爲 。

由於業務的性質我們需要檢索文檔得到更多的搜索關鍵字出現應該是第一位的,我們並不真正關心文檔的長度。

正因爲如此,一個關於很多關鍵字的大個人簡歷的Guy在結果中被移到下面,一些小的簡歷出現了。

爲了避免我需要禁用長度標準化。有人可以幫我弄這個嗎??

我附上了盧克結果圖片供您參考。

在這張圖片中,用java 50次和oracle 6次的文件下移到第11個位置。

alt text

但是該文獻用java 24倍和Oracle的5倍是最佳射手由於fieldnorm。

alt text

希望我傳達的信息清楚...如果沒有,請問我,我會提供更多的信息

回答

7

您可以禁用與Field.setOmitNorms(true)

+0

感謝Shashikant長度正常化,我會嘗試.. :) – RameshVel 2010-09-21 11:02:12

+0

沙西,它按預期工作...你救了我的一天...... – RameshVel 2010-09-21 11:28:28

+0

長這樣一個簡短的答案的問題;) – serg10 2010-09-21 12:25:48