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

У меня есть схема, которая позволяет использовать многозначное поле. Как мне построить поиск, который возвращает только те документы, в которых есть 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 только потому, что они имеют 2 записи в MultivaluedField, даже если это разные записи.


person Jorge Lazo    schedule 22.10.2016    source источник


Ответы (1)


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

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

person MatsLindh    schedule 22.10.2016
comment
Я думаю, что выберу это решение, не знаю, почему я не подумал об этом раньше, спасибо - person Jorge Lazo; 23.10.2016