gpt4 book ai didi

ruby-on-rails - 轮胎搜索不能忽略口音

转载 作者:行者123 更新时间:2023-12-03 00:29:49 26 4
gpt4 key购买 nike

我设置了 flex 搜索和轮胎搜索。

我的模型具有以下设置:

  tire.settings :analysis => {
:analyzer => {
:spanish_snowball => {
:type => "snowball",
:language => "Spanish",
:filter => %w{asciifolding lowercase}
}
}
}

以及以下映射:
 tire.mapping do
indexes :id, :index => :not_analyzed
indexes :name, :analyzer => 'spanish_snowball', :boost => 3
indexes :urbanization, :analyzer => 'spanish_snowball'

indexes :categories do
indexes :name, :analyzer => 'spanish_snowball'
end

indexes :tags do
indexes :name, :analyzer => 'spanish_snowball'
end
end

我还定义了 to_indexed_json方法
def to_indexed_json
to_json include: { categories: { only: [:name]}, tags: { only: [:name]} }
end

我想在搜索中忽略重音符号,因此我在 asciifolding分析器中使用 spanish_snowball。但是,这些口音并没有被忽略。
Business.tire.search("japonés").size
=> 10

Business.tire.search("japones").size
=> 0

我已经用弯曲度测试了分析仪,分析仪似乎工作正常
➜  ~  curl -XGET 'localhost:9200/businesses/_analyze?pretty=1&text=Japonés%20nobu&analyzer=spanish_snowball'
{
"tokens" : [ {
"token" : "japones",
"start_offset" : 0,
"end_offset" : 7,
"type" : "<ALPHANUM>",
"position" : 1
}, {
"token" : "nobu",
"start_offset" : 8,
"end_offset" : 12,
"type" : "<ALPHANUM>",
"position" : 2
} ]
}%

最佳答案

执行搜索时,您需要告诉elasticsearch如何分析搜索查询。

简短形式Model.search 'foo'(我认为)不允许您指定这些选项,但可以使用较长的版本:

Model.search do
query do
string 'foo', :analyzer => 'bar'
end
end

关于ruby-on-rails - 轮胎搜索不能忽略口音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16909159/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com