Каково использование поля типа "multiValued" в Solr?

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

Что внутри Solr делает/обрабатывает/обрабатывает поле, помеченное как multiValued?

В чем разница в индексировании в Solr между полем с несколькими значениями и теми, которые не являются?

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

Док говорит:

многозначных = истина | ложь

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

Ответ 1

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

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

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

q=tags:tag1

или использовать теги для фильтрации результатов, например

q=query&fq=tags:tag1

Ответ 2

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

Например:
если у меня есть идентификатор fieldType, который является идентификатором multiValued = false, индексируя документ таким образом:

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

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

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

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

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

Ответ 3

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

<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"/>

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