我正在使用 ElasticSearch 和 Tire 执行一些基本的搜索功能,但是雪球词干分析器的基本配置让我很困惑。我非常关注 GitHub 页面中的代码示例:https ://github.com/karmi/tire
这是一个 Ruby 示例文件(Ruby 1.9.3,Tire 1.8.25):
require 'tire'
Tire.index 'videos' do
delete
create :mappings => {
:video => {
:properties => {
:code => { :type => 'string' },
:description => { :type => 'string', :analyzer => 'snowball' }
}
}
}
end
videos = [
{ :code => '1', :description => "some fight video" },
{ :code => '2', :description => "a fighting video" }
]
Tire.index 'videos' do
import videos
refresh
end
s = Tire.search 'videos' do
query do
string 'description:fight'
end
end
s.results.each do |document|
puts "* #{document.code} - #{document.description}"
end
我本来希望这会在比赛中产生这两个记录,因为战斗和战斗具有相同的主干。但是,它只返回第一条记录:
* 1 - some fight video
这表明正在使用默认分析器,而不是我正在配置的分析器。
我知道根据这个问题在查询字符串中传递实际字段(ElasticSearch 映射不起作用)并且已成功运行此代码,因此我的 ElasticSearch 安装看起来不错。
我需要更改什么让轮胎返回此查询的两条记录(即如何让词干在这里工作)?