Что такое использование "многозначного" типа поля в Solr?
Я новичок в Apache Solr. Даже после прочтения документация часть, мне трудно четко понять функциональность и использование multiValued тип поля свойство.
что внутренне Solr делает/обрабатывает / обрабатывает поле, помеченное как многозначных?
в чем разница в индексации в Solr между полем, которое многозначных а те, что нет?
может кто-нибудь объяснить с каким-нибудь хорошим примером?
доктор сказал:
multiValued=true / false
True, если это
поле может содержать несколько значений в
документ, т. е. если он может появиться
несколько раз в документе
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