Как выполнить поиск по документам с 2 или более записями в многозначном поле в Solr?

#solr #lucene #multivalue

#solr #lucene #многозначность

Вопрос:

У меня есть схема, которая допускает многозначное поле, как мне построить поиск, который возвращает только документы, содержащие 2 или более записей в этом поле? например, в этом подмножестве данных:

 <doc>
<str name="id">A</str>
<arr name="multivaluedField">
  <str>One</str>
  <str>Two</str>
</arr></doc>

<doc>
<str name="id">B</str>
<arr name="multivaluedField">
  <str>One</str>
</arr></doc>

<doc>
<str name="id">C</str>
<arr name="multivaluedField">
  <str>Three</str>
  <str>Four</str>
</arr></doc>
  

Поиск вернет документы A и C только потому, что в MultivaluedField них есть 2 записи, даже если это разные записи.

Ответ №1:

Самым простым (и наиболее эффективным) способом было бы проиндексировать целочисленное значение, которое содержит количество значений вместе с существующими значениями, чтобы у вас было multiValued_count поле. Это поле может быть проиндексировано, и вы можете выполнять как эффективные запросы диапазона, так и поиск точных значений.

Вы можете сделать это непосредственно в своем коде индексирования или в процессоре обновления, если это необходимо.

Комментарии:

1. Я думаю, что выберу это решение, не уверен, почему я не подумал об этом раньше, спасибо