Я пытаюсь создать анализатор, который заменяет специальный символ пробелом и преобразует его в верхний регистр. затем, если я хочу искать строчными буквами, это также должно работать.
Анализатор отображения:
soundarya@soundarya-VirtualBox:~/Downloads/elasticsearch-2.4.0/bin$ curl -XPUT 'http://localhost:9200/aida' -d '{
"settings": {
"analysis": {
"analyzer": {
"my_analyzer": {
"tokenizer": "standard",
"char_filter": [
"my_char_filter"
],
"filter": [
"uppercase"
]
}
},
"char_filter": {
"my_char_filter": {
"type": "pattern_replace",
"pattern": "(\\d+)-(?=\\d)",
"replacement": "$1 "
}
}
}
}
}
'
{"acknowledged":true}
soundarya@soundarya-VirtualBox:~/Downloads/elasticsearch-2.4.0/bin$ curl -XPOST 'http://localhost:9200/aida/_analyze?pretty' -d '{
"analyzer":"my_analyzer",
"text":"My name is Soun*arya?jwnne&yuuk"
}'
Это правильно токенизирует слова, заменяя специальный символ пробелом. Теперь, если я ищу слово из текста, это не дает мне никакого результата.
soundarya@soundarya-VirtualBox:~/Downloads/elasticsearch-2.4.0/bin$ curl -XGET 'http://localhost:9200/aida/_search' -d '{
"query":{
"match":{
"text":"My"
}
}
}'
Я не получаю никакого результата из приведенного выше запроса GET. Получение результата вроде:
soundarya@soundarya-VirtualBox:~/Downloads/elasticsearch-2.4.0/bin$ curl -XGET 'http://localhost:9200/aida/_search' -d '{
"query":{
"match":{
"text":"my"
}
}
}'
{"took":5,"timed_out":false,"_shards":{"total":5,"successful":5,"failed":0},"hits":{"total":0,"max_score":null,"hits":[]}}
Кто-нибудь может мне с этим помочь! Благодарю вас!
_analyze
ничего не индексирует, а просто показывает, как будет анализироваться текст. Я думаю, что это та же проблема, что и в вашем другой вопрос - person Val   schedule 23.09.2016