Я пытаюсь все решить эту проблему.Elasticsearch + Tire не игнорировать акценты
У меня есть простой рельс для приложения с поиском. Поиск работает отлично, когда я что-то ищу с акцентами, но если я ищу слово без акцентов, мои результаты пустые.
Я прочитал документацию о Тире и Elasticsearch, но я не знаю, что происходит
class Article < ActiveRecord::Base
attr_accessible :description, :title, :user_id
belongs_to :user
include Tire::Model::Search
include Tire::Model::Callbacks
mapping do
indexes :_id, index: :not_analyzed
indexes :title, analyzer: 'snowball', boost: 100
indexes :description, analyzer: 'snowball'
end
def self.search(params)
tire.search(page: params[:page], per_page: 10) do
query { string params[:q], default_operator: "AND" } if params[:q].present?
end
end
end
пыльник Я пытался использовать asciifolding но didn't работу.
class Article < ActiveRecord::Base
attr_accessible :description, :title, :user_id
include Tire::Model::Search
include Tire::Model::Callbacks
tire.settings :index => {
:analysis => {
:analyzer => {
:index_analyzer => {
:tokenizer => "whitespace",
:filter => ["asciifolding", "lowercase", "snowball"]
},
:search_analyzer => {
:tokenizer => "whitespace",
:filter => ["asciifolding", "lowercase", "snowball"]
}
},
:filter => {
:snowball => {
:type => "snowball",
:language => "Portuguese"
}
}
}
}
mapping do
indexes :_id, index: :not_analyzed
indexes :title, analyzer: 'snowball', boost: 100
indexes :description, analyzer: 'snowball'
end
def self.search(params)
tire.search(page: params[:page], per_page: 10) do
query { string params[:q], default_operator: "AND" } if params[:q].present?
end
end
end
Я использую Sense on Chrome для проверки, сопоставления и всей конфигурации в порядке!
Что происходит ???
Благодаря