在提取中文的拼音时,发现 拼音中带声调的,而在业务中又只能输入英文进行查询,例如如果数据存成这样的这样的
POST test/type
{
"name": "ǒě"
}
而根据用户的输入去模糊匹配查找,是这样写的
GET test/_search
{
"query": {
"query_string": {
"default_field": "name",
"query": "*e*"
}
}
}
结果查询结果如下
{
"took" : 32,
"timed_out" : false,
"_shards" : {
"total" : 5,
"successful" : 5,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : 0,
"max_score" : null,
"hits" : [ ]
}
}
所以在保存拼音数据的时候,需要单独将带声调的拼音转化成纯英文字符,便于后面的查找。
在解决带声调的拼音时,查到python 标准库下有 unicodedata 这个可以解决 点击查看unicodedata
总的来说,你看到的所有字符在底层都有其编码形式,然后拿到标准化的字符串后将其以ascii编码后去去掉了声调,最后转变成字符串就行了
unicodedata.normalize('NFKD', 'ǒě').encode('ascii','ignore').decode('utf-8')