Я использую solr через sunspot_rails v1.2 gem.Solr WordDelimiterFilterFactory и символы периода
В моем файле schema.xml я следующее:
<fieldType name="text" class="solr.TextField" omitNorms="false">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.PorterStemFilterFactory"/>
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" catenateWords="1" preserveOriginal="1"/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="3" maxGramSize="50" side="front"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.PorterStemFilterFactory"/>
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" preserveOriginal="1"/>
</analyzer>
</fieldType>
Если индекс I строка fir[email protected]
, я могу найти его, если я ищу example.com
, но если я ищу firstname.lastname
.
Если я удалю WordDelimiterFilterFactory
из настроек запроса, я могу отправить электронное письмо, выполнив поиск firstname.lastname
; однако при поиске example.com
ничего не возникает.
Как я могу изменить файл конфигурации, чтобы иметь возможность искать по любому из этих способов?
Примечания: Я узнал, что главный вопрос. По-видимому, порядок, в котором перечислены фильтры, имеет значение. Я применял WordDelimiterFilterFactory * после * LowerCaseFilterFactory и, таким образом, индексировал некоторые заглавные слова. – KurtPreston