2016-01-05 2 views
5

Я пытаюсь найти смайлик/emoji, содержащий текст в elasticsearch. Раньше я вставлял твиты в ES. Теперь я хочу найти пример улыбок или печальных лиц, связанных с твитами. Я пробовал следующиеКак искать смайлик/эможи в поиске elastics?

1) использовал эквивалент значений unicode улыбки, но не работал. Результаты не были возвращены.

GET /myindex/twitter_stream/_search 
{ 
    "query": { 
    "match": { 
     "text": "\u1f603" 
    } 
    } 
} 

Как настроить поиск emoji в elasticsearch? Do, мне нужно кодировать сырые твиты перед тем, как проглатывать в elasticsearch? Каким будет запрос? Любые опытные подходы? Благодарю.

ответ

1

То, как я видел работу с смайликами, на самом деле строка хранится вместо изображений, когда вы храните их в базе данных. Напр. Улыбка сохраняется как: smile :. Вы можете проверить это в своем случае. Если это так, вы можете добавить пользовательский токенизатор, который не маркирует двоеточия, чтобы можно было точно сопоставить смайлики. Затем при поиске вам просто нужно преобразовать изображение смайлика в поисках в соответствующую строку, и elasticsearch сможет его найти. Надеюсь, что это помогает

6

specification объяснить, как искать смайлики:

Searching включает в себя как поиск для Emoji символов в запросах, и найти Emoji символы в мишени. Они наиболее полезны, когда включают аннотации как синонимы или подсказки. Например, когда кто-то ищет ⛽︎ на yelp.com, они видят совпадения для «gas station». И наоборот, поиск «газового насоса» в поисковой системе может найти страницы, содержащие ⛽︎.

Аннотации относятся к конкретному языку: поиск на yelp.de, кто-то будет ожидать поиска ⛽︎ для получения совпадений для «Tankstelle».

Вы можете сохранить реальный символ юникода и развернуть его на аннотации на каждом языке, который вы хотите поддержать.

Это можно сделать с помощью фильтра синонимов. Но стандартизированный токенизатор Elasticsearch удалит эможи, поэтому предстоит довольно много работы:

  • удалить emoji модификатор, очистить все;
  • tokenize через пробелы;
  • удалить нежелательные знаки препинания;
  • расширить emoji до их синонимов.

Весь процесс описан здесь: http://jolicode.com/blog/search-for-emoji-with-elasticsearch (отказ от ответственности: я автор).

 Смежные вопросы

  • Нет связанных вопросов^_^