如何在elasticsearch中搜索表情符号/表情符号?

Gau*_*kur 5 emoticons emoji elasticsearch

我试图在elasticsearch中搜索包含文本的表情符号/表情符号.早些时候,我在ES中插入了推文.现在我想搜索微笑或悲伤面孔相关的推文.我尝试了以下内容

1)使用相当于微笑的unicode值,但没有用.没有返回任何结果.

GET /myindex/twitter_stream/_search
{
  "query": {
    "match": {
      "text": "\u1f603"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

如何在elasticsearch中设置表情符号搜索?是的,我必须在输入弹性搜索之前对原始推文进行编码?什么是查询?有经验的方法吗?谢谢.

Dam*_*ien 6

规范解释了如何搜索的表情符号:

搜索包括在查询中搜索表情符号字符,以及在目标中查找表情符号字符.当它们将注释包含为同义词或提示时,它们最有用.例如,当有人在yelp.com上搜索,时,他们会看到"加油站"的匹配项.相反,在搜索引擎中搜索"气泵"可以找到包含⛽︎的页面.

注释是特定于语言的:在yelp.de上搜索,有人会期望搜索⛽︎以导致"Tankstelle"的匹配.

您可以保留真正的unicode char,并将其扩展为您希望支持的每种语言的注释.

这可以使用同义词过滤器完成.但是Elasticsearch标准tokenizer将删除表情符号,所以还有很多工作要做:

  • 删除表情符号修饰符,清理一切;
  • 通过空格标记;
  • 删除不需要的标点符号;
  • 将表情符号扩展为他们的同义词.

整个过程在这里描述:http://jolicode.com/blog/search-for-emoji-with-elasticsearch(免责声明:我是作者).


udi*_*tal 2

我看到表情符号的工作方式实际上是当您将它们存储在数据库中时,存储一个字符串来代替图像对应物。例如。微笑存储为:smile:。您可以根据您的情况进行验证。如果是这种情况,您可以添加一个自定义分词器,该分词器不会对冒号进行分词,以便可以对表情符号进行精确匹配。然后在搜索时,只需将搜索中的表情图像转换为适当的字符串,elasticsearch 就能找到它。希望能帮助到你