Indeks Solr vs przechowywany

Jestem trochę zdezorientowany co do zachowania indeksu i przechowywanych w polach Solr.

Na przykład, jeśli mam następujące W schemacie.xml

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

Czy pole test1 nie będzie przechowywane w dokumencie Solr, nawet jeśli utworzę dokument z tym polem i ustawię na to pole wartość i zatwierdzę dokument do Solr. Skoro posiadam atrybut stored=false, to czy oznacza to, że wartość pola jest tracona w Solr i nie jest utrzymywana?

 47
Author: Pale Blue Dot, 2014-03-10

4 answers

Zgadza się. Zazwyczaj pole ma być indeksowane lub przechowywane albo oba. Jeśli ustawisz oba na wartość false, pole to nie będzie dostępne w dokumentach Solr (do wyszukiwania lub wyświetlania). Zobacz odpowiedź Alexandre ' a dla szczególnych przypadków, gdy będziesz chciał ustawić oba na false.

Jak stwierdzono tutaj : indexed=true sprawia, że pole można przeszukiwać (i sortować i facetable). Na przykład, jeśli masz pole o nazwie test1 z indexed=true, możesz wyszukać je w stylu q=test1:foo, gdzie foo jest wartością, której szukasz. If indexed=false for field test1 then that query will return no results, even if you have a document in Solr with test1's value is foo.

stored=true oznacza, że możesz pobrać pole podczas wyszukiwania. Jeśli chcesz jawnie pobrać wartość pola w zapytaniu, użyjesz param fl W zapytaniu, np. fl=test1 (domyślnie jest to fl=*, co oznacza pobranie wszystkich przechowywanych pól). Tylko jeżeli stored=true dla test1, wartość zostanie zwrócona. Inaczej będzie nie zostanie zwrócony.

 82
Author: arun,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-10 18:01:00

Głównym punktem ustawienia obu wartości false jest jawne pominięcie tego konkretnego pola.

Na przykład, jeśli masz przechowywanie / indeksowanie mapowania dynamicField i chcesz zignorować jedną konkretną nazwę, która w przeciwnym razie podlegałaby wzorcowi dynamicField.

Alternatywnie możesz użyć dynamicField, aby zignorować cały zestaw pól z tym samym prefiksem / sufiksem, który pochodzi od strony trzeciej. Na przykład, Tika wyśle Ci całą masę pól metadanych, które możesz po prostu chcieć ignorować. Zobacz to zdefiniowane w przykładzie Solr schematu.xml i używany w solrconfig.xml

W późniejszych wersjach Solr, możesz również użyć IgnoreFieldUpdateProcessorFactory (Zobacz pełna lista dla innych), która pozbędzie się tych pól jeszcze wcześniej w procesie indeksowania.

 22
Author: Alexandre Rafalovitch,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-15 08:46:17

Cytowanie z Tej odpowiedzi w wątku poczty Solr:

"indexed" i "stored" są niezależnymi, ortogonalnymi atrybutami - możesz użyć każda z czterech kombinacji prawdy i fałszu. "indexed" służy do wyszukiwania lub zapytanie, część "lookup" przetwarzania zapytania. Once the wyszukiwanie / zapytanie / wyszukiwanie jest zakończone, a zestaw dokumentów jest zaznaczony, " przechowywany" jest zestawem pól, których wartości są dostępne do wyświetlenia lub zwracane z Solr odpowiedź.

Po części powodem separacji jest to, że Solr / Lucene "analizuje" lub przekształca dane wejściowe w bardziej wydajną formę dla szybszego i bardziej odpowiednie wyszukiwanie / wyszukiwanie. Niestety, że analizowane/przekształcane dane są często nie nadaje się już do wyświetlania i spożycia przez ludzi. W innych słowa analiza/transformacja nie jest dwukierunkowa / odwracalna. Ustawienie "stored = true" gwarantuje, że oryginalne dane mogą być pobrane w jego oryginał forma.

 2
Author: Pale Blue Dot,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-15 08:51:58

Jeśli oba są fałszywe, tracisz dane w tym polu. Jeśli zindeksowane są true, dane można przeszukiwać, ale nie można ich wyświetlić. Jeśli ustawisz stored true, nie będziesz mógł wyszukiwać w tym polu, ale może być ono wyświetlane (w tym przypadku możesz napisać regułę copyfield, aby skopiować informacje z tego pola do domyślnego pola wyszukiwania). Oba ustawione jako true - > możesz wyszukiwać i wyświetlać.

 0
Author: Alik Vardanyan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-19 00:33:30