2010-11-15 69 views
9

的商店屬性有Lucene的字段的構造方法:一個Lucene場

Field(String name, String value, Store store, Index index) 

例如,我可以通過創建一個新的領域:

Field f1 = new Field("text", "The text content", Field.Store.YES, Field.Index.ANALYZED); 

我並不完全確定的意義第四個參數:Index

如果我將它設置爲Index.No,那麼是否需要將此字段添加爲「字段」?

因爲在我看來,一旦屬性被聲明爲一個領域,它應該被索引,如果沒有,那麼你爲什麼要聲明爲一個字段?

是什麼查詢和搜索之間的區別?

回答

19

存儲領域是返回什麼,當你ask Lucene to give you back a document。他們擁有一個領域的原始價值,沒有分析。您可以使用它們將文檔呈現給用戶(不一定是所有字段)。

未索引存儲的字段,以存儲有關用戶不會用它來查詢索引的文檔元數據是有用的。一個例子可能是文檔來自的數據庫ID。這個ID永遠不會被用戶使用,因爲他們不知道這個ID,所以索引它通常是無用的。但是如果你存儲它,那麼你可以在運行時使用它來從你的db中收集額外的信息。

查詢和搜索之間的區別是相當主觀的。對我自己而言,搜索實際上是在索引中搜索的一般行爲,而查詢實際上是query string used to search the index

18

正如Lucene FAQ提到:

之間是什麼存儲標記化,索引的不同,矢量?

  • 存儲=原樣存儲在Lucene索引值
  • 記號化=字段是使用指定的分析器分析 - 發射被索引
  • 索引令牌=文本(作爲-與關鍵字字段,或者從標記化字段令牌)由搜索(又名反轉)
  • 向量=術語每文檔頻率被存儲在索引中一種易於獲取方式。

你可以只索引字段的內容沒有存儲,現場也可搜索,就不能凸顯的結果,因爲亮點需要原始郵件的內容,這應該存儲。

+0

那麼爲什麼人們創建一個沒有索引它的字段呢? – hguser 2010-11-15 05:51:46

+4

例如,存儲帖子ID,指數的發佈內容,那麼你可以通過搜索帖子ID後的Lucene加載這些職位。 – Robin 2010-11-15 10:04:31