2017-05-19 34 views
1

我在lucene中保存字段id和msg以支持全文搜索。當用戶輸入一個關鍵字時,lucene執行搜索並顯示結果,當用戶使用保存的ID點擊該關鍵字時,我打開從數據庫獲取結果並顯示更多細節。是否有必要保存字段本身以在lucene中生成倒排索引

是否有可能爲Lucene來節省味精只是倒排索引申請,而不是整個味精領域,把我交給剛的ID,這樣我可以從數據庫獲取結果顯示的結果嗎?

通過這樣做我的數據不會是多餘的。

回答

1

在Lucene的,你存儲文檔創建/讀取的目的(如果您通過DB形容目的)和你指數作爲搜索目的倒排索引是兩個完全不同的事情。

您還沒有表現出任何代碼,你怎麼指標。

在Lucene的存儲數據是可選的,人們選擇存儲數據量太大,以避免額外DB的存儲空間的成本,但在更短的同步要求保持在主源數據結果也要求等。所以有一個權衡。

在下面的代碼片段中,DOC_ID被索引和存儲,而TEXT_FIELD僅被索引並且未被存儲。

Document doc = new Document(); 
doc.add(new Field("DOC_ID", "DOCONE", new FieldType(
      TextField.TYPE_STORED))); 
doc.add(new Field("TEXT_FIELD", "This", new FieldType(
      TextField.TYPE_NOT_STORED))); 
writer.addDocument(doc); 

因此搜索後,讓說你的命中文檔 - hitDoc所以你會得到下面, hitDoc.getField("DOC_ID")="DOCONE"hitDoc.getField("TEXT_FIELD")=NULL

兩個字段建立索引,但只有一個被存儲。索引意味着它可以被搜索。