Что такое анализатор запросов Solr по умолчанию

Меня смущают эти слова в документе solr:

https://cwiki.apache.org/confluence/display/solr/The+Standard+Query+Parser

До Solr 1.3 стандартный обработчик запросов вызывал стандартный анализатор запросов в качестве анализатора запросов по умолчанию. В версиях, начиная с Solr 1.3, стандартный обработчик запросов вызывает анализатор запросов DisMax в качестве анализатора запросов по умолчанию.

https://cwiki.apache.org/confluence/display/solr/The+DisMax+Query+Parser

Параметр q не поддерживает символы подстановки, такие как *.

так что я скачать Solr 4.7.2, распаковать его

проверяя что у меня есть

  <requestHandler name="/select" class="solr.SearchHandler">

в solr-4.7.2/example/solr/collection1/conf/solrconfig.xml, по умолчанию.

затем я индексирую этот документ

<?xml version="1.0"?>
<add>
  <doc boost="1.0">
        <field name="id">item1</field>
    </doc>
</add>

но

http://localhost:8983/solr/collection1/select?q=id:it*

находит документ,

http://localhost:8983/solr/collection1/select?q=id:it*defType=dismax

не находит предмет

так выглядит стандартный парсер запросов по умолчанию вместо парсера запросов dismax?

2 ответа

Значение по умолчанию определено в вашем файле solrconfig.xml. Файл solrconfig.xml по умолчанию, который поставляется с 4.7.2, имеет следующую запись:

edismax

Это означает, что по умолчанию используется расширенный синтаксический анализатор запросов dismax. http://wiki.apache.org/solr/ExtendedDisMax

Похоже, стандартный парсер запросов по умолчанию вместо парсера запросов dismax. Но мы можем указать парсер запросов по умолчанию для любого обработчика запросов solr(ver 4).

ниже приведена некоторая запись конфигурации из файла solrConfig.xml

    <requestHandler name="/query" class="solr.SearchHandler">
         <lst name="defaults">
           <str name="echoParams">explicit</str>
           <int name="rows">20</int>
           <str name="defType">edismax</str>
           <str name="wt">json</str>
         </lst>
      </requestHandler>

Я не могу добавить комментарий к вашему первоначальному вопросу, но Нагендра, по сути, прав, хотя вы используете /query скорее, чем /select которую он определяет как requestHandler в его сегменте от solrconfig.xml.

Вам также не хватает & в вашем URL перед вашим defType поэтому он будет рассматриваться как часть строки поиска, а не как отдельный параметр.

http://localhost:8983/solr/collection1/select?q=id:it*&defType=dismax

не будет возвращать результаты, потому что будет использовать синтаксический анализатор, который не поддерживает *, но,

http://localhost:8983/solr/collection1/select?q=id:it*&defType=edismax

даст результат, поскольку вместо этого используется edismax.

На момент написания страницы, на которую вы ссылаетесь, была заменена следующей, которая относится к стандартному синтаксическому анализатору запросов, используемому по умолчанию, поэтому, возможно, он вернулся?

https://lucene.apache.org/solr/guide/6_6/the-standard-query-parser.html

Другие вопросы по тегам