Что такое использование "многозначного" типа поля в Solr?



Я новичок в Apache Solr. Даже после прочтения документация часть, мне трудно четко понять функциональность и использование multiValued тип поля свойство.



что внутренне Solr делает/обрабатывает / обрабатывает поле, помеченное как многозначных?



в чем разница в индексации в Solr между полем, которое многозначных а те, что нет?



может кто-нибудь объяснить с каким-нибудь хорошим примером?



доктор сказал:




multiValued=true / false



True, если это
поле может содержать несколько значений в
документ, т. е. если он может появиться
несколько раз в документе


576   3  

3 ответов:

многозначное поле полезно, когда в нем присутствует более одного значения. Простым примером могут быть теги, может быть несколько тегов, которые необходимо индексировать. поэтому, если у нас есть поле тегов как многозначное, ответ solr вернет список вместо строкового значения. Следует отметить, что вам нужно отправить несколько строк для каждого значения тегов, таких как:

<field name="tags">tag1</tags>
<field name="tags">tag2</tags>
...
<field name="tags">tagn</tags>

после того, как у вас есть все значения Индекса вы можете искать или фильтровать результаты по любому значению,например, вы можно найти все документы с tag1 с помощью запроса, как

q=tags:tag1

или используйте теги для фильтрации результатов, таких как

q=query&fq=tags:tag1

многозначный определяется в схеме, разрешено ли поле иметь более одного значения.

например:
если у меня есть тип поля с именем ID, который является многозначным=false индексирование документа, такого как это:

doc {
  id : [ 1, 2]
  ...
}

вызовет исключение в потоке индексирования, и документ не будет индексироваться (проверка схемы завершится ошибкой).

С другой стороны, если у меня есть несколько значений для поля, я хотел бы установить multiValued=true, чтобы гарантировать правильность индексирования, например:

doc {
  id : 1
  keywords: [ hello, world ]
  ...
}

в этом случае вы бы определили "ключевые слова" как многозначное поле.

Я использую несколько полей значений только с copyfields, поэтому подумайте так, скажем, все поля будут иметь одно значение, если это не copyfield, например, у меня есть следующие поля:

<field name="id" type="string" indexed="true" stored="true"/>
<field name="name" type="string" indexed="true" stored="true"/>
<field name="subject" type="string" indexed="true" stored="true"/>
<field name="location" type="string" indexed="true" stored="true"/>

Я хочу запросить только одно поле и, возможно, искать все 4 поля выше, тогда нам нужно использовать copyfield. во-первых, чтобы создать новое поле вызов "всем", затем скопируйте все в 'все'

<field name="all" type="text" indexed="true" stored="true" multiValued="true"/>
<copyField source="*" dest="all"/>

теперь поле " все " должно быть многозначным.

Comments

    Ничего не найдено.