Диспетчер запросов Dismax - PullRequest
       57

Диспетчер запросов Dismax

0 голосов
/ 15 сентября 2011

Я использую solr для поиска набора данных по имени (например, «Дэн» или «Джо Смит»). Я хотел бы вернуть результаты, указанные в запросе (edit: с подстановочным знаком в конце) в порядке, указанном другим индексированным полем double_score (например, 10.0 или 72.3). В настоящее время у меня есть следующее, которое не работает вообще:

<!-- Note that the default search is on the field name -->
<requestHandler name="/scoresearch" class="solr.SearchHandler" default="true">
   <!-- <lst name="invariants">
          <str name="q">{!boost b=sum(double_score) defType=dismax v=$qq}</str>
        </lst> -->
        <lst name="defaults">
          <str name="defType">dismax</str>    
          <str name="echoParams">explicit</str>
      <int name="rows">10</int>
     <!-- <str name="qq"></str> -->
      <str name="qf">double_score</str>
      <str name="debug">true</str>
      <str name="q.alt">*:*</str>
    </lst>
</requestHandler>

Если я удалю комментарии, то поиск сработает. любой запрос, который я делаю, заменяется на q.alt, а затем усиливается значением double_score. Если это не заменит q.alt, это будет желаемый эффект.

Также обратите внимание, что, хотя я еще не углубился в более интересные возможности, такие как маркировка имен, я планирую сделать это. Таким образом, любое возможное предложение / решение не должно исключать этого.

Ответы [ 2 ]

1 голос
/ 16 сентября 2011

Я думаю, вы слишком усложняете ... попробуйте это

<lst name="defaults">
    <str name="defType">edismax</str>
    <str name="qf">name</str>
    <str name="q.alt">*:*</str>
    <str name="bf">double_score</str>
</lst>
0 голосов
/ 15 сентября 2011

Попробуйте

http://localhost:8983/solr/select/?q=Joe Smith&qf=double_score^1.2 description

, что означает:

  1. Я ищу Джо Смит
  2. Я ищу поля двойной счет и описание

Где описание будет полем для хранения текста, который вы хотите найти.

Убедитесь, что описание имеет тип данных text , с

stored="true" (in case you want to return snippets)
indexed="true" (so it is searchable)

В текстовом типе данных используются методы фильтрации (stemming, tokenization), в то время как строковый тип данных обрабатывает его таким образом,См. Как определить тип поля для индексации SOLR?

...