2012-06-25 49 views
2

我新來solr,所以我真的需要有人來幫助我理解下面的字段。如果存儲= false,indexed = false,那麼該字段的含義是什麼?看下面的兩個例子,有什麼區別?如果該字段沒有存儲,它有什麼用...Solr schema.xml字段混淆

<field name="test1" type="text" indexed="false" 
     stored="false" required="false" /> 

這個怎麼樣?

<field name="test2" type="text" indexed="false" 
     stored="false" required="false" multiValued="true" /> 

非常感謝!

+1

如果沒有存儲,那麼你不能得到(索引)該字段在結果集中的值(例如,顯示給用戶,如書名)。如果它沒有索引,那麼你不能搜索它。不知道有一個點,有他們兩個假的(也許如果一些領域是在copyField使用,存儲/索引)? – nickdos

+0

nickdos,我懷疑這是否需要,所以我發佈了這個問題:)。感謝您的幫助〜 – trillions

+0

正如其他海報所提到的,這些信息很容易在SOLR網站上找到 - 您正在引入負面評級 - 正如SO所定義的那樣:「這個問題沒有顯示任何研究工作;它不清楚或沒有用」 – nickdos

回答

8

這是很容易,它似乎是:

  • indexed:你可以在上面搜索
  • stored:你能證明它在您的搜索結果

事實上,有可能是字段你不用於搜索,但你只是想在結果中顯示它們。另一方面,可能有些字段需要在結果中顯示,但您不想用於搜索。當您不需要顯示某個字段時,stored=false非常重要,因爲它可以提高性能。如果你將所有的字段存儲起來,並且你有很多字段,Solr可能會變慢,返回結果。

當然,假兩個都沒有多大意義,因爲這個領域完全沒用。

獨特的差的兩個領域之間是multiValued=true,這意味着第二字段可以包含多個值。這意味着該字段的內容不僅僅是一個文本條目,而是一個文本條目列表。

+0

非常感謝,javanna!你的解釋現在對我很有意義。前一個開發者沒有留下任何文檔,我對這個新手很陌生,所以我不得不問這裏的專家,以瞭解爲什麼他甚至爲schema.xml中的同一個字段出現stored = false和index = false。顯然,這似乎並不需要,我可以簡單地將其刪除。我認爲如果在模式文件中沒有提到某個字段,它將基本上被忽略,不需要做這個類似錯誤的事情來忽略字段...非常感謝您幫助我並引導我:) – trillions

+0

您'歡迎光臨!還有一件事。如果你使用動態字段,你應該在你的'schema.xml'中檢查,因爲這可能會讓事情有點不同。 – javanna

+0

謝謝javanna!這是非常有用的:)只是爲了確認,這是否意味着如果字段定義與動態字段匹配,那麼在原始字段本身中不需要定義索引和存儲,因爲動態字段會這樣做? – trillions

8

如果你想有一個領域是搜索,那麼你應該編入索引的屬性設置爲true,您可以找到Solr wiki.

最好的解釋。

indexed = true:如果此字段應爲「索引」,則爲true。如果(且僅當)字段被索引,則它是可搜索的,可排序的和可面向的。

如果您想要在搜索結果中檢索字段,則應該將stored屬性設置爲true。如果此字段的值應搜索

期間可檢索如果你想存儲在一個領域多個值,那麼你應該多值字段設置爲true:

存儲=真

多值= TRUE:如果該字段可以包含每個文檔的多個值,也就是說,如果它可以在文檔中出現多次

+1

非常感謝,parvin! :) – trillions