Solr case insensitve - PullRequest
       15

Solr case insensitve

1 голос
/ 25 мая 2011

Привет,

Я реализую функцию автозаполнения в Solr, и у меня есть одна проблема.

Для автозаполнения я использую

<fieldType name="text_auto" class="solr.TextField" sortMissingLast="true" omitNorms="true">
    <analyzer>
        <tokenizer class="solr.KeywordTokenizerFactory"/>  
        <filter class="solr.LowerCaseFilterFactory" />
    </analyzer>
</fieldType> 

Я думал, что LowerCaseFilter должен сделать регистр нечувствительным, но это не так. Фактически, только в нижнем регистре Token означает, что запрос типа «comput» приведет к «computer», а «Comput» нет. На самом деле я хочу, чтобы Comput и Comput привели к компьютеру.

Я уже попробовал это:

<fieldType name="text_auto_low" class="solr.TextField" sortMissingLast="true" omitNorms="true">
    <analyzer>
        <tokenizer class="solr.KeywordTokenizerFactory"/>  
        <filter class="solr.LowerCaseFilterFactory" />
    </analyzer>
</fieldType> 

<fieldType name="text_auto_up" class="solr.TextField" sortMissingLast="true" omitNorms="true">
    <analyzer>
        <tokenizer class="solr.KeywordTokenizerFactory"/>  
    </analyzer>
</fieldType>

По какой-то причине в нем тоже нет слов. Мой вопрос: почему и как я могу это исправить?

1 Ответ

1 голос
/ 28 мая 2011

Lucene имеет класс Analyzer, который вы можете использовать (реализовать) тремя способами:

  • SimpleAnalyzer : преобразует весь ввод в нижний регистр.
  • StopAnalyzer : Это удаляет слова, которые удаляют шум из вашего поиска.
  • StandardAnalyzer : Это выполняет оба вышеупомянутых процесса фильтрации и, таким образом, может «очистить» ваш запрос.

Теперь, перейдя к вашему вопросу, я бы порекомендовал технику под названием ngram , которая разбивает ваш запрос и затем вместо этого ищет эти фразы. Таким образом, вы все равно можете получить отличные результаты, даже если есть опечатки.

Чтобы узнать, как это сделать, я предлагаю вам прочитать это , чтобы начать. У этого также есть другая большая информация относительно запросов. Это не только решит вашу проблему, но и улучшит ваше приложение.

Веселитесь: D

...