Минимальное соответствие Solr: ArrayIndexOutOfBoundsException

У меня есть следующий обработчик запросов, который ищет два поля text_en, Title и Body. Запрос работает без настройки минимального соответствия. Если я использую поле мм, и если моя строка поиска превышает 2 термина, я получаю:

null:java.lang.ArrayIndexOutOfBoundsException: 1
at org.apache.solr.util.SolrPluginUtils.calculateMinShouldMatch(SolrPluginUtils.java:547)

Мой обработчик запросов:

  <requestHandler name="/broadQuery" class="solr.SearchHandler">
    <lst name="defaults">
        <str name="defType">edismax</str>
        <str name="wt">xml</str>
        <str name="fl">ListingId</str>
        <str name="qf">Title^2 Body</str>
        <str name="rows">100</str>
        <str name="pf">Title^4 Body^2</str>
        <str name="ps">0</str>
        <str name="echoParams">all</str>

        <str name="mm">2 3&lt;-1 5&lt;-2 6&lt;-40%</str> <!-- HERE -->
    </lst>
  </requestHandler>

Проблема. В чем ее причина и как ее решить.


person Kevin    schedule 19.01.2013    source источник


Ответы (1)


Я думаю, что ваш параметр мм неправильно сформирован. Согласно спецификация, вы можете комбинировать только несколько условных параметров. Тем не менее, ваш первый параметр (2) не является условным. Можете ли вы переписать все выражение как набор условных параметров и посмотреть, исчезнет ли это.

Или я бы попробовал на их примере (2‹-25% 9‹-3) и посмотрел, получится ли у вас такая же проблема. Если вы этого не сделаете, продолжайте изменять его в соответствии с вашим, пока не столкнетесь с проблемой или не получите то, что вам нужно.

person Alexandre Rafalovitch    schedule 20.01.2013
comment
Спасибо. Удаление начала 2 решило проблему. Я предполагаю, что 2 в любом случае фактически неявно, и что, когда элементов меньше трех, потребуются все. - person Kevin; 21.01.2013