2016-10-22 3 views
0

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

<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, даже если они разные записи.

ответ

2

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

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

+0

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

Смежные вопросы