在对一个 model 做查询时,想对关键字进行自动转换简繁进行查询。
目前 ES 中存储的 model 数据有简体,也有繁体,所以想实现无论查询关键字是简体还是繁体,都能查找到数据库中对应的结果。
举个例子:
数据库中有一个影片名叫
精靈旅社3:疯狂假期
,搜索的关键字无论是精灵旅社
还是精靈旅社
、甚至是精灵旅社3 瘋狂假期
都应该能搜索到这个影片。
按项目的说明,我给名为 Movie
的 model 加入了如下配置:
class Movie < ApplicationRecord
searchkick settings: {
analysis: {
analyzer: {
tsconvert: {
type: 'custom',
tokenizer: "tsconvert"
}
},
tokenizer: {
tsconvert: {
type: "stconvert",
keep_both: true,
convert_type: "s2t"
}
},
char_filter: {
tsconvert: {
type: "stconvert",
convert_type: "s2t"
}
}
}
}
end
使用:Movie.search('')
搜索后,还是没起作用,命令行的 log 有如下显示:
curl http://localhost:9200/movies_development/_search?pretty -H 'Content-Type: application/json' -d '{"query":{"dis_max":{"queries":[{"match":{"number.analyzed":{"query":"精灵旅社","boost":10,"operator":"and","analyzer":"searchkick_search"}}}......
看起来并没有使用名为 tsconvert
的 analyzer,请教有没有同学做过,我是不是使用的姿势不对?