Эта проблема выглядит следующим образом: запрос с подстановочными знаками Solr с пробелами У меня есть запрос с подстановочными знаками, который выглядит что-то типа:
q=location:los a*
Я бы хотел, чтобы это соответствовало «лос-анджелес» и «лос-альтос». Такой запрос:
q=location:los\ a*
Работает нормально, но если у меня есть логика синонимов: (synonym.txt)
los,las
И используйте "los l*" для соответствия "las lu". Кажется, это не работает. Как я могу это сделать?
Тип файла и конфигурация файла:
<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"/>