2016-11-08 29 views
0

Эта проблема, как это: Solr wildcard query with whitespace У меня есть подстановочные запрос, который выглядит примерно так:Solr подстановочные запрос с пробелами и синоним

q=location:los a*

Я хотел бы, чтобы соответствовать «Лос-Анджелес» и " лос алтос ". Запрос, как:

q=location:los\ a*

работает отлично, но если у меня есть синоним логики: (synonym.txt)

los,las

И использовать "Лос-л *", чтобы соответствовать «лас-лу «Кажется, не работает. Как я могу это сделать?

типа файла и файла конфигурации:

<fieldType name="ngram" class="solr.TextField" positionIncrementGap="100"> <analyzer type="index"> <tokenizer class="solr.WhitespaceTokenizerFactory"/> <filter class="solr.WordDelimiterFilterFactory" stemEnglishPossessive="0" generateWordParts="0" generateNumberParts="0" catenateWords="1" catenateNumbers="0" catenateAll="0" splitOnNumerics="0" preserveOriginal="1"/> <filter class="solr.ASCIIFoldingFilterFactory"/> <filter class="solr.SynonymFilterFactory" synonyms="synonym.txt" ignoreCase="true" expand="true"/> <filter class="solr.LowerCaseFilterFactory"/> <filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="25"/> </analyzer> <analyzer type="query"> <tokenizer class="solr.WhitespaceTokenizerFactory"/> <filter class="solr.WordDelimiterFilterFactory" stemEnglishPossessive="0" generateWordParts="0" generateNumberParts="0" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnNumerics="0" preserveOriginal="1"/> <filter class="solr.ASCIIFoldingFilterFactory"/> <filter class="solr.LowerCaseFilterFactory"/> </analyzer> </fieldType>

<field name="location" type="ngram" indexed="true" stored="false"/>

ответ

0

Похоже, это проблема версии. Я использую Solr 4.0 в своем проекте, но когда я обновляю версию Solr до 5.4.1, логика синонимов отлично работает.

Я не изменяю анализатор запросов. Это для особых требований.

0

Вы использовали solr.SynonymFilterFactory для индексации не анализатор запросов так

при поиске "los l*" он ищет терминов, начиная с лос не «лас». использование анализатора для запроса

Добавить эту строку в анализатор запросов

<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/> 

Надеется, что это работает