Solr WordDelimiterFilterFactory и символы периода - PullRequest
2 голосов
/ 30 января 2012

Я использую solr через гем sunspot_rails v1.2.

В моем файле 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>

Если я индексирую строку firstname.lastname@example.com, я могу найти ее, если ищу example.com, но не могу найти firstname.lastname.

Если я удаляю WordDelimiterFilterFactory из настроек запроса, тогда я могу отправить письмо по электронной почте, выполнив поиск firstname.lastname; однако при поиске example.com.

ничего не появляется

Как я могу изменить файл конфигурации для возможности поиска любым из этих способов?

1 Ответ

1 голос
/ 30 января 2012

Вы можете отладить, как ваша текущая конфигурация индекса и анализа запросов влияет на ваши поиски, с помощью Страница анализа Solr Admin , другой вариант - использовать Luke для просмотра индекса Lucene.

Однако есть альтернатива, которую вы могли бы изучить. Так как электронная почта и URL должны обрабатываться особым образом, в Lucene есть вариант StandardTokenizer, который конкретно работает с электронной почтой и URL Lucene Email / URL Tokenizer соответствует Solr Email / URL Tokenizer Factory

...