У меня есть схема, созданная Haystack для индексации книг и авторов в Solr 4.3. При выполнении поиска все работает нормально, за исключением условий поиска, включая дефис.
Я знаю, что вы должны избегать их, используя обратную косую черту, но даже с веб-интерфейсом solr я не могу найти правильные документы.
Как показано на снимках экрана ниже, есть автор по имени Укиё-Э, которого можно найти с помощью full_name:(ukiyo). При вводе полное_имя:(укиё-э) или полное_имя:(укиё-э) я ничего не могу найти.
РЕДАКТИРОВАТЬ
Информация о схеме:
<fieldType name="edge_ngram" class="solr.TextField" positionIncrementGap="1">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory" />
<filter class="solr.LowerCaseFilterFactory" />
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="15" side="front" />
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory" />
<filter class="solr.LowerCaseFilterFactory" />
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
</analyzer>
</fieldType>
...
<field name="full_name" type="edge_ngram" indexed="true" stored="true" multiValued="false" />
Результаты анализатора: