2016-01-05 91 views
5

我正試圖在elasticsearch中搜索包含文本的表情符號/表情符號。此前,我在ES中插入了推文。現在我想搜索例如微笑或悲傷的面孔相關的推文。我嘗試了以下內容:如何在elasticsearch中搜索表情/表情符號?

1)使用微笑的unicode值的等價物,但沒有工作。沒有結果返回。

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

如何在elasticsearch中設置表情符號搜索?那麼,我必須在攝入彈性搜索之前編碼原始推文?什麼是查詢?有經驗的方法?謝謝。

回答

1

我看到表情圖標工作的方式實際上是一個字符串,當你將它們存儲在數據庫中時,它們會存儲在圖像對應位置。例如。微笑存儲爲:微笑:。你可以驗證你的情況。如果是這種情況,您可以添加一個自定義標記器,該標記器不對冒號進行標記,以便可以對錶情符號進行精確匹配。然後,在搜索時,只需將搜索到的表情圖像轉換爲適當的字符串,elasticsearch將能夠找到它。希望它可以幫助

6

specification解釋如何搜索的表情符號:

搜索包括在查詢中都尋找表情符,並 尋找目標表情符。這些在 中最有用,它們將註釋包括爲同義詞或提示。例如,當 某人在yelp.com上搜索⛽︎時,他們看到「gas station」的匹配項。相反,在搜索引擎 中搜索「gas pump」可能會找到包含⛽︎的頁面。

註解是語言特定的:在yelp.de上搜索時,有人會 希望搜索⛽︎導致匹配「Tankstelle」。

你可以保留真正的unicode字符,並將其擴展爲每種語言中的註釋以支持。

這可以用同義詞過濾器來完成。但Elasticsearch標準分詞器將刪除表情符號,因此有相當多的工作要做:

  • 刪除emoji修飾符,清理所有東西;
  • 通過空格標記化;
  • 刪除不需要的標點符號;
  • 將表情符號擴展爲它們的同義詞。

整個過程在這裏描述:http://jolicode.com/blog/search-for-emoji-with-elasticsearch(免責聲明:我是作者)。

相關問題