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

时间:2016-01-05 18:53:24

标签: elasticsearch emoji emoticons

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

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

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

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

2 个答案:

答案 0 :(得分:6)

specification解释了如何搜索表情符号:

  

搜索包括在查询中搜索表情符号字符,以及   在目标中找到表情符号字符。这些是最有用的   它们包括注释作为同义词或提示。例如,何时   有人在yelp.com上搜索,,他们看到匹配“gas   站”。相反,在搜索引擎中搜索“气泵”   可以找到包含⛽︎。

的页面      

注释是特定于语言的:在yelp.de上搜索,有人会这样做   期待搜索⛽︎以获得“Tankstelle”的匹配。

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

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

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

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

答案 1 :(得分:2)

我看到表情符号工作的方式实际上是一个字符串存储在图像副本的位置,当您将它们存储在数据库中时。例如。微笑存储为:smile:。您可以在您的情况下验证。如果是这种情况,您可以添加一个自定义标记生成器,该标记生成器不会对冒号进行标记,以便可以完全匹配表情符号。然后在搜索时你只需要将搜索中的表情图像转换为适当的字符串,而elasticsearch就能找到它。希望它有所帮助