2012-01-06 77 views
2

例如,每個文檔有幾個標籤。我可以多值字段和標記字段之間的得分差異

  • 將它們索引爲單個文本字符串按空格分隔uisng WhiteSpaceTokenizer。 (例如, 「標籤1標籤2標籤3」)
  • 使用KeywordAnalyzer( 例如 doc.addField("tags1", "tag1"); doc.addField("tags", "tag2"); doc.addField("tags", "tag23)

這兩種方法將工作separatly將它們添加到單個字段的名字多次。問題是這些類型的索引有多不同? (即場規格化因子,tf/idf計數,字段長度計算,斜率因子等)

回答

0

我認爲多值會更準確。

想象一個標記過的字符串「蜘蛛網開發商」

VS

與價值觀「蜘蛛」和「web開發」多值字段

爲「Web開發人員」的搜索將匹配這兩個領域,但匹配與多值領域可以被視爲更準確。

+0

蜘蛛網也將是一場比賽,儘管他可能不需要它,並且可以通過位置增量來防止。 – milan 2012-01-06 11:07:40

+0

我知道。但我的標籤會注意包含空格,或者我會選擇diff標記器。關於lucene評分模型 – yura 2012-01-06 15:12:46

1

無論如何,Lucene會連接場景後面多值字段的所有值,因此它與第一個案例沒有多大區別。如果你只使用標籤作爲過濾器(給我所有帶tag2標籤的文檔),那麼你絕對不會看到任何區別。

+0

的問題是否意味着我可以使用第二種方法搜索短語? – yura 2012-01-06 15:10:47

+0

爲什麼不呢? (這很煩人,min 15char註釋長度...) – milan 2012-01-06 15:20:08

+0

因爲它是意想不到的行爲,如果我索引「a」,「b」 - 它是不相關的兩個字符串。我不想通過「一個b」查詢找到它們 – yura 2012-01-09 18:45:11

相關問題