我试图获得用户提交的“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