我有一些文档,我正在使用elasticsearch进行索引。但有些文件是用大写字母写的,而Tukish字符则是改变的。例如,“kürşat”被写为“KURSAT”。
我想通过搜索“kürşat”找到这个文件。我怎么能这样做?
由于
答案 0 :(得分:7)
以下是您在Sense中尝试的一个小例子:
<强>索引:强>
DELETE test
PUT test
{
"settings": {
"analysis": {
"filter": {
"my_ascii_folding": {
"type": "asciifolding",
"preserve_original": true
}
},
"analyzer": {
"turkish_analyzer": {
"tokenizer": "standard",
"filter": [
"lowercase",
"my_ascii_folding"
]
}
}
}
},
"mappings": {
"test": {
"properties": {
"name": {
"type": "string",
"analyzer": "turkish_analyzer"
}
}
}
}
}
POST test/test/1
{
"name": "kürşat"
}
POST test/test/2
{
"name": "KURSAT"
}
查询:
GET test/_search
{
"query": {
"match": {
"name": "kursat"
}
}
}
<强>响应:强>
"hits": {
"total": 2,
"max_score": 0.30685282,
"hits": [
{
"_index": "test",
"_type": "test",
"_id": "2",
"_score": 0.30685282,
"_source": {
"name": "KURSAT"
}
},
{
"_index": "test",
"_type": "test",
"_id": "1",
"_score": 0.30685282,
"_source": {
"name": "kürşat"
}
}
]
}
<强>查询:强>
GET test/_search
{
"query": {
"match": {
"name": "kürşat"
}
}
}
<强>响应:强>
"hits": {
"total": 2,
"max_score": 0.4339554,
"hits": [
{
"_index": "test",
"_type": "test",
"_id": "1",
"_score": 0.4339554,
"_source": {
"name": "kürşat"
}
},
{
"_index": "test",
"_type": "test",
"_id": "2",
"_score": 0.09001608,
"_source": {
"name": "KURSAT"
}
}
]
}
现在'preserve_original'标志将确保如果用户键入:'kürşat',那么具有该完全匹配的文档将比具有'kursat'的文档排名更高(注意两个查询响应的得分差异)。
如果您希望得分相等,则可以将该标志设为false。
希望我的问题正确!