Вот мои настройки:Синоним анализатор не работает
{
"countries": {
"aliases": {},
"mappings": {
"country": {
"properties": {
"countryName": {
"type": "string"
}
}
}
},
"settings": {
"index": {
"creation_date": "1472140045116",
"analysis": {
"filter": {
"synonym": {
"ignore_case": "true",
"type": "synonym",
"synonyms_path": "synonym.txt"
}
},
"analyzer": {
"synonym": {
"filter": [
"synonym"
],
"tokenizer": "whitespace"
}
}
},
"number_of_shards": "5",
"number_of_replicas": "1",
"uuid": "7-fKyD9aR2eG3BwUNdadXA",
"version": {
"created": "2030599"
}
}
},
"warmers": {}
}
}
Мой synonym.txt
файл находится в папке config
внутри главного elasticsearch
папки.
Вот мой запрос:
query: {
query_string: {
fields: ["countryName"],
default_operator: "AND",
query: searchInput,
analyzer: "synonym"
}
}
Слова в synonym.txt
являются: нас, патент США, сша.
Так что это не сработает. Интересно, что поиск работает нормально, за исключением, когда я ввожу любое из слов в файл synonym.txt
. Так, например, когда я обычно печатаю нас в поиске, я бы получил результаты. С этим анализатором нас ничего мне не дает.
Я сделал close
и open
для моего ES-сервера, и все равно он не работает.
РЕДАКТИРОВАТЬ
Пример document
:
{
"_index": "countries",
"_type": "country",
"_id": "57aabeb80057405968de152b",
"_score": 1,
"_source": {
"countryName": "United States"
}
Пример searchInput
(это идет от переднего конца):
united states
РЕДАКТИРОВАТЬ # 2:
Вот мой обновленный индекс конфигурационный файл:
{
"countries": {
"aliases": {},
"mappings": {},
"settings": {
"index": {
"number_of_shards": "5",
"creation_date": "1472219634083",
"analysis": {
"filter": {
"synonym": {
"ignore_case": "true",
"type": "synonym",
"synonyms_path": "synonym.txt"
}
},
"analyzer": {
"synonym": {
"filter": [
"synonym"
],
"tokenizer": "whitespace"
}
}
},
"country": {
"properties": {
"countryName": {
"type": "string",
"analyzer": "synonym"
},
"number_of_replicas": "1",
"uuid": "50ZwpIVFTqeD_rJxlmd59Q",
"version": {
"created": "2030599"
}
}
},
"warmers": {}
}
}
}
}
При попытке добавления документов, и делать поиск на указанных документов, то synonym
анализатор не работает для меня.
EDIT # 3
Вот 2 документа в индексе:
{
"took": 3,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 2,
"max_score": 1,
"hits": [{
"_index": "stocks",
"_type": "stock",
"_id": "2",
"_score": 1,
"_source": {
"countryName": "United States"
}
}, {
"_index": "stocks",
"_type": "stock",
"_id": "1",
"_score": 1,
"_source": {
"countryName": "Canada"
}
}]
}
}
Можете ли вы создать более полный пример? Вам не хватает данных и тестовых данных. –
Хорошо. Я добавил сопоставление с одним из полей в моем индексе 'country',' countryName'. – MonkeyOnARock
Что такое значение 'searchInput' и укажите пример документа, который у вас есть в вашем индексе. –