【问题标题】:How to search emoticon/emoji in elasticsearch?如何在弹性搜索中搜索表情符号/表情符号?
【发布时间】:2016-01-05 18:53:24
【问题描述】:

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

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

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

如何在 elasticsearch 中设置 emoji 搜索?是否,我必须在摄取到 elasticsearch 之前对原始推文进行编码?什么是查询?有什么有经验的方法吗?谢谢。

【问题讨论】:

    标签: elasticsearch emoji emoticons


    【解决方案1】:

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

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

    注释是特定于语言的:在 yelp.de 上搜索,有人会 预计搜索 ⛽︎ 会导致匹配“Tankstelle”。

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

    这可以通过同义词过滤器来完成。但是 Elasticsearch 标准分词器会删除表情符号,所以还有很多工作要做:

    • 移除表情符号修饰符,清理一切;
    • 通过空格进行标记;
    • 删除不需要的标点符号;
    • 将表情符号扩展到它们的同义词。

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2015-04-12
        • 1970-01-01
        • 2018-01-07
        • 2017-04-30
        • 1970-01-01
        • 1970-01-01
        • 2017-11-11
        • 1970-01-01
        相关资源
        最近更新 更多