Запрос Fuzzy_like_this в эластичном поиске не показывает строку с апострофом

У меня есть ошибка в моем запросе fuzzy_like_this. Если моя строка содержит какой-либо апостроф, то поиск этих значений не содержится в БД.

образец

цитрусовые => строка поиска, но результаты не выбирают значения апострофа, вместо этого они получаются как цитрусовые, так и так .. пожалуйста, помогите мне заранее спасибо


person Sujith Divakar    schedule 10.09.2014    source источник


Ответы (2)


эластичный поиск принимает апостроф. поэтому, пожалуйста, проверьте свой запрос еще раз

person Community    schedule 30.09.2014

6 символов Юникода могут представлять «апостроф» в документах. Это может быть u0027, u2018, u2019, u201B, u0091 или u0092.

Из шести Elasticsearch распознает три символа Юникода как «апостроф»: u0027, u2018 и u2019.

Итак, я думаю, что ваш апостроф должен быть последним 3 символом Юникода, который Elasticsearch принимает за границы слов. Таким образом, цитрусовые будут обозначаться только как цитрусовые.

Вам может помочь добавление char_filter в ваш анализатор. Все шесть символов будут заменены правильным «апострофом» u0027.

curl -XPUT http://localhost:9200/index_name(your_index) -d '
{
"settings": {
"analysis": {
  "char_filter": { 
    "mycharfilter": {
      "type": "mapping",
      "mappings": [ 
        "\\u0091=>\\u0027",
        "\\u0092=>\\u0027",
        "\\u2018=>\\u0027",
        "\\u2019=>\\u0027",
        "\\u201B=>\\u0027"
      ]
    }
  },
  "analyzer": {
    "quotes_analyzer": {
      "tokenizer":     "standard",
      "char_filter": [ "mycharfilter" ] 
    }
   }
  }
 }
}'
person Laishram Krishnananda Singh    schedule 10.09.2014
comment
спасибо за ответ, немного запутался. Как мне передать эти настройки на эластичный сервер или мне нужно сделать эти настройки во время поискового запроса. я использую php curl для отправки и извлечения данных, используя bulk и fuzzy_like_this соответственно - person Sujith Divakar; 11.09.2014
comment
Вам нужен этот параметр на вашем сервере Elasticsearch, а не во время запроса. Например. curl -XPUT http:// .../your_index -d ' и приведенный выше фрагмент - person Laishram Krishnananda Singh; 11.09.2014