#solr
#solr
Вопрос:
Я новичок в solr. Моя версия экземпляра solr является:
Версия спецификации Solr: 3.1.0
Версия реализации Solr: 3.1.0 1085815 — grantingersoll — 2011-03-26 18:00:07
Версия спецификации Lucene: 3.1.0
Версия реализации Lucene: 3.1.0 1085809 — 2011-03-26 18:06:58
Текущее время: Вт 26 апреля 08:01:09 по восточному времени 2011
Время запуска сервера: Вт 26 апреля 07:59:05 по восточному времени 2011
У меня есть следующее определение для типа textgen:
<fieldType name="textgen" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="false">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" preserveOriginal="1"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="15" side="front" preserveOriginal="1"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.StopFilterFactory"
ignoreCase="true"
words="stopwords.txt"
enablePositionIncrements="true"/>
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" preserveOriginal="1"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
Я использую этот тип для поля имени в моем индексе. Как вы можете видеть, я использую autoGeneratePhraseQueries = «false», но для запроса sony vaio 4gb я получаю следующий запрос в debug:
<lst name="debug">
<str name="rawquerystring">sony vaio 4gb</str>
<str name="querystring">sony vaio 4gb</str>
<str name="parsedquery"> name:sony name:vaio MultiPhraseQuery(name:"(4gb 4) gb")</str>
<str name="parsedquery_toString"> name:sony name:vaio name:"(4gb 4) gb"</str>
У вас есть какие-либо идеи, как я могу избежать этого многофразировочного запроса?
Ответ №1:
Роберт Мьюир ответил в списке рассылки пользователей solr:
Что у вас есть в solrconfig.xml для luceneMatchVersion?
Если вы не установите это, то по умолчанию будет использоваться эмуляция «Lucene 2.9», так что старые конфигурации solr 1.4 будут работать таким же образом. Я попробовал ваш пример, и он отлично сработал здесь, и я предполагаю, что, вероятно, это то, что происходит.
значение по умолчанию в example/solrconfig.xml выглядит так:
<!-- Controls what version of Lucene various components of Solr adhere to. Generally, you want to use the latest version to get all bug fixes and improvements. It is highly recommended that you fully re-index after changing this setting as it can affect both how text is indexed and queried. --> <luceneMatchVersion>LUCENE_31</luceneMatchVersion>
У меня это сработало.