Gem "Sunspot" делает различие между символами UTF-8

В приложении Rails я начал использовать sunspot => https://github.com/sunspot/sunspot/blob/master/README.md

Все шло нормально, пока я не заметил это (взято с рельсовой консоли):

1.9.3p194 :002 > MyModel.search{fulltext "leon"}.results
=> [#<MyModel id: 16, name: "Leon">]
1.9.3p194 :003 > MyModel.search{fulltext "león"}.results
=> [#<MyModel id: 18, name: "León">]

Как я могу сказать системе, чтобы она не делала различий между "leon" и "león" (я хочу что-то вроде search{fulltext "leon"} => [#MyModel id: 16 ..., #MyModel id: 18...])

Я искал эту проблему, и я нашел каждый раз один и тот же ответ:

С этой строкой в ​​Gemfile работает следующий выпуск rsolr: gem 'rsolr',:git => "https://github.com/mwmitchell/rsolr.git"

Спасибо

3 ответа

Решение

Спасибо за ответы. По крайней мере, я решил это прямо прошлой ночью с другой идеей, которую я взял из http://codeshooter.wordpress.com/2011/01/13/full-text-search-in-in-rails-with-sunspot-and-solr/

идея в Restaurant.rb

text :name do 
  self.name.my_normalize
end

и функция

to_s.mb_chars.normalize(:kd).gsub(/[^\x00-\x7F]/,'').downcase

эта строка работает со строками типа "ааааа" --- "аааааа"

В schema.xml необходимо добавить символьный фильтр, как описано в http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters, например:

<charFilter class="solr.MappingCharFilterFactory" mapping="mapping-ISOLatin1Accent.txt"/>

и у вас должен быть mapping-ISOLatin1Accent.txt, у вас должны быть записи, которые отобразят последовательность байтов Юникода в последовательность символов asci. Вы можете увидеть пример здесь mapping-ISOLatin1Accent.txt

Вам необходимо внести изменения в конфигурационные файлы Solr (приложения, а не gem). Solr "встроен" в гем, но вы можете получить доступ к его конфигурации, как если бы он был установлен отдельно. Посмотрите документацию Solr.

Другие вопросы по тегам