Что такое анализатор запросов 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