2009-08-17 99 views
1

我正在測試Lucene.NET以滿足我們的搜索需求,並且我有幾個問題。按語言搜索和排序

我們在XML格式的文件。每個文檔都包含多語言文本。文件數量和語言本身因文件而異。請參閱以下示例:

<document>This is a sample document, which is describing a <word lang="de">tisch</word>, a <word lang="en">table</word> and a <word lang="en">desk</word>.</document> 

文檔的關鍵字標有特殊元素和語言屬性。

當我創建Lucene索引我提取XML和對語言和關鍵字的(我不知道如果我要)文本內容,就像這樣:

This is a sample document, which is describing a tisch, a table and a desk. 

de - tisch 
en - table 
en - desk 

我不知道具體如何創建一個索引,我將能夠搜索例如: - 所有包含德語單詞tisch的文檔(而不是包含其他語言的單詞tisch的文檔)。

而且我想指定在運行時排序: 我想按用戶指定的語言順序(取決於用戶界面)進行排序。例如,如果我們有兩個文件:

<document>This is a sample document, which is describing a <word lang="de">tisch</word>.</document> 
<document>This is a another sample document, which is describing a <word lang="en">table</word>.</document> 

和「蒂施或表」上的英文界面的用戶搜索我想先拿到第二個結果。

的任何信息或建議表示讚賞。

非常感謝!

回答

1

你有一個設計決策做出,其中選項有:

  • 使用一個單一的指標,其中每個文件都有每它使用的每種語言的一個字段,或
  • M用索引,M爲語料庫中的語言數量。

如果使用多索引方法,將搜索限制爲特定語言或一組語言會更容易 - 只需在索引中搜索這些語言,而不是使用其他語言。此外,按語言排序變得更容易。因此,如果您沒有 ,那麼需要來自不同語言的關鍵字的「AND」搜索會出現在同一個文檔中,我會建議M-index方法。

根據你的榜樣,我認爲這些文件不是特別標記的部分是英文的。如果是這樣,您可以將文檔文本作爲單獨的字段添加到英文索引中;其他索引只需要存儲一個文檔ID,這將使它們更輕。