我試圖獲得用戶提交的「Joe Frankles」,「Joe Frankle」,「Joe Frankle's」的查詢以匹配原始文本「Joe Frankle's」。現在,我們正索引字段這段文字是在(輪胎/紅寶石格式):在ElasticSearch中忽略撇號(所有權)
{ :type => 'string', :analyzer => 'snowball' }
,並與搜索:
query { string downcased_query, :default_operator => 'AND' }
我嘗試這樣做不成功:
create :settings => {
:analysis => {
:char_filter => {
:remove_accents => {
:type => "mapping",
:mappings => ["`=>", "'=>"]
}
},
:analyzer => {
:myanalyzer => {
:type => 'custom',
:tokenizer => 'standard',
:char_filter => ['remove_accents'],
:filter => ['standard', 'lowercase', 'stop', 'snowball', 'ngram']
}
},
:default => {
:type => 'myanalyzer'
}
}
},
真的很有意思。這看起來好像只是刪除了撇號,所以「喬·弗蘭克斯」會匹配「喬·弗蘭克的」,但是「喬·弗蘭克」會與上面的「喬·弗蘭克的」匹配嗎? – LMH 2013-04-25 21:25:54
是的,對我而言,我不是100%確定爲什麼,但這是我能夠實現它的唯一方法。我使用瑞典雪球順便說一句,不知道這是否重要。 – Yeggeps 2013-04-26 10:04:31
謝謝,我給了這個嘗試,但它似乎並沒有工作。我用語法更新了上面的問題。任何精彩的想法? – LMH 2013-04-26 15:36:31