我使用耐嚼gem elasticsearch。導軌:使用彈性搜索數據地址使用elasticsearch耐嚼寶石
我有LocationsIndex,映射:
class LocationsIndex < Chewy::Index
settings analysis: {
analyzer: {
folding: {
tokenizer: "standard",
filter: [ "lowercase", "asciifolding" ]
},
sorted: {
tokenizer: 'keyword',
filter: ['lowercase', 'asciifolding']
}
}
}
define_type Location do
field :name, type: 'string', analyzer: 'standard' do
field :folded, type: 'string', analyzer: "folding"
end
field :address, type: 'string', analyzer: 'standard' do
field :address, type: 'string', analyzer: 'folding'
end
field :locations, type: 'geo_point', value: ->{ {lat: lat, lon: lon} }
end
end
當我查詢:
LocationsIndex::Location.query(
multi_match: {
query: keyword,
fields: ["address", "address.folded" ,"name", "name.folded"]
}
)
數據樣本:
{ 「花」:2 「TIMED_OUT」:假, 「_shards」:{ 「total」:5, 「successful」:5, 「failed」:0},「hits」:{ 「總」:10, 「MAX_SCORE」:1.0, 「命中」:[{ 「_index」: 「位置」, 「_type」: 「位置」, 「_id」: 「131」, 「 _score「:1.0, 」_source「:{」name「:」ViệtNam「,」address「:」ViệtNam「,」locations「:{」lat「:16.9054,」lon「:106.576}} }, {_ name:「locations」, 「_type」:「location」, 「_id」:「136」, 「_score」:1.0, 「_source」:{「name」:「Quan truong Ngo Mon 「,」address「:」23/8,ThừaThiênHuế,ViệtNam「,」locations「:{」lat「:16.4669,」lon「:107.58}},{ 」_index「:」locations「, 「_type」:「location」, 「_id」:「132」, 「_score」:1.0, 「_source」:{「name」:「ThừaThiênHuế」,「address」:「ThừaThiênHuế, 「位置」:{「lat」:16.4674,「lon」:107.591}} },{ 「_index」:「locations」, 「_type」:「location」, 「_id」:「 137「, 」_score「:1.0, 」_source「:{」name「:」Phu Van Lau「,」address「:」23/8,ThừaThiênHuế,ViệtNam「,」locations「:{」lat 「:16.4655」 LON「:107.581}} },{ 」_index「: 」位置「, 」_type「: 」位置「, 」_id「: 」133「, 」_score「:1.0, 「_source」:{「name」:「Ha Noi」,「address」:「Ha Noi,ViệtNam」,「locations」:{「lat」:16.4674,「lon」:107.591}} },{ 「_index」:「locations」, 「_type」:「location」, 「_id」:「138」, 「_score」:1.0, 「_source」:{「name」:「Cau gia Vien」,「地址「:」Le Duan,ThừaThiênHuế,ViệtNam「,」locations「:{」lat「:16.4601,」lon「:107.571}},{ 」_index「:」locations「, 」_type「 :「location」, 「_id」:「134」, 「_score」:1.0, 「_source」:{「name」:「TP Ho Chi Minh」,「address」:「TP胡志明,ViệtNam 「,」locations「:{」lat「:16.4674,」lon「:107.591}} },{ 」_ index「:」locations「, 」_type「:」location「, 」_id「:」139「, 」_score「:1.0, 」_source「:{」name「:」Chua thien Pagoda「,」address 「:」Kim Long,ThừaThiênHuế,ViệtNam「,」locations「:{」lat「:16.4537,」lon「:107.545}}, 」_index「:」locations「 「location」, 「_id」:「130」, 「_score」:1.0, 「_source」:{「name」:「ViệtNam」,「address」:「ViệtNam」,「locations」 LAT 「:16.9054」 LON「:106。576}} },{ 「_index」: 「位置」, 「_type」: 「位置」, 「_id」: 「135」, 「_score」:1.0, 「_source」:{ 「名稱」 :「Dai Noi Hue」,「address」:「23/8,ThừaThiênHuế,ViệtNam」,「locations」:{「lat」:16.4698,「lon」:107.577}} }]}}
當我運行與關鍵字=「越南」
result :
_id = [131,132,,133,134,135,136,137,138,139,130] # => OK working
查詢,但我與keywork =「順化」
運行查詢時result :
_id = [132,135,139] # => Don't working ???, should have been: _id = [132,135,136,137,138,139]
同樣的,keywork = 「色相」
result :
_id = [132,135] # => Don't working ???, should have been: _id = [132,135,136,137,138,139]
包含上述詞的搜索結果如何(添加類型,或做任何事情)