2013-04-09 3 views
2

Я новичок в SOLR. В настоящее время мой запрос возвращает компании с соответствующими postcodes, postCode - это поле типа массива. Некоторые из результатов содержат несколько значений для своего узла postCode, а некоторые имеют только один одно значение.Поле запроса SOLR с одним или несколькими значениями

РЕЗУЛЬТАТЫ SET:

<doc> 
<str name="company">Alien Technology</str> 
<arr name="postCode"> 
    <str>2068</str> 
    <str>2065</str> 
    <str>2066</str> 
    <str>2061</str> 
    <str>2077</str> 
</arr> 
.... 
</doc> 

<doc> 
<str name="company">Cris' Sports</str> 
<arr name="postCode"> 
    <str>2068</str> 
</arr> 
... 
</doc> 

<doc> 
<str name="company">Hyper Consultation Firm</str> 
<arr name="postCode"> 
    <str>2068</str> 
    <str>2000</str> 
    <str>2071</str> 
</arr> 
... 
</doc> 

<doc> 
<str name="company">DJ Goods & Gadgets</str> 
<arr name="postCode"> 
    <str>2068</str> 
</arr> 
... 
</doc> 

...

Моего вопроса здесь, можно ли получать только данные, имеет только одно значение для их почтового индекса или наоборот выборки тех данных, которые содержат несколько значение для поля postCode и исключить другие, у которых есть только одно значение для их postCode. Возможно ли это с помощью запроса SOLR?

Пример:

Я искал Postcode = 2068

Мой первый запрос будет возвращать только Cris Спорт и DJ Товары и гаджеты, потому что они имеют только одно значение для поля Postcode.

Мой второй запрос будет возвращать только Alien Technology и Hyper Consultation Firm, поскольку оба они содержат значения mulitple для поля postCode.

Спасибо всем!

ответ

1

Нет прямого способа получить количество элементов в многозначном поле или запрос функции для вычисления того же самого.
Вы всегда можете поддерживать подсчет поля во время индексации и использовать его во время запроса.

0

при сортировке по счету (desc), поле с одним значением будет иметь более высокий балл, поэтому будет указано перед другими. Не уверен, есть ли способ ограничить набор результатов только документами с оценкой соответствия макс-балла. Может быть, это может быть сделано на клиенте?

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