#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. Я думаю, что выберу это решение, не уверен, почему я не подумал об этом раньше, спасибо