2016-01-05 37 views
5

Sto provando a cercare emoticon/emoji contenenti testo in elasticsearch. In precedenza, ho inserito tweet in ES. Ora voglio cercare ad esempio smile o facce tristi relative tweets. Ho provato il seguenteCome cercare emoticon/emoji in elasticsearch?

1) usato equivalente di valori unicode di sorriso, ma non ha funzionato. Nessun risultato è stato restituito.

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

Come impostare la ricerca di emoji in elasticsearch? Devo codificare i tweet grezzi prima di entrare in elasticsearch? Quale sarebbe la domanda? Qualche approccio esperto? Grazie.

risposta

1

Il modo in cui ho visto le emoticon funzionano in realtà è una stringa memorizzata al posto delle controparti delle immagini quando le si memorizza in un database. Per es. Un sorriso è memorizzato come: smile :. Puoi verificarlo nel tuo caso. In tal caso, puoi aggiungere un tokenizer personalizzato che non esegue tokenizzazione sui due punti in modo che sia possibile creare una corrispondenza esatta per le emoticon. Quindi durante la ricerca è sufficiente convertire l'immagine dell'emoticon nella ricerca in una stringa appropriata ed elasticsearch sarà in grado di trovarla. Speranza che aiuta

6

Il specification spiegare come cercare emoji:

Ricerca comprende sia la ricerca di caratteri emoji nelle query, e trovando caratteri emoji nel target. Questi sono più utili quando includono le annotazioni come sinonimi o suggerimenti. Ad esempio, quando qualcuno cerca ⛽︎ su yelp.com, vedono corrispondenze per "stazione gas ". Al contrario, la ricerca di "pompa di benzina" in un motore di ricerca potrebbe trovare pagine contenenti ⛽︎.

Le annotazioni sono specifiche della lingua: cercando su yelp.de, qualcuno vorrebbe aspettarsi una ricerca per ⛽︎ per ottenere risultati per "Tankstelle".

È possibile mantenere il carattere unicode reale ed estenderlo ad esso in ogni lingua che si desidera supportare.

Questo può essere fatto con un filtro sinonimo. Ma il tokenizzatore standard Elasticsearch rimuoverà l'emoji, quindi c'è un bel po 'di lavoro da fare:

  • rimuovere il modificatore di emoji, pulire tutto;
  • tokenize tramite spazio bianco;
  • rimuovere la punteggiatura indesiderata;
  • espandi l'emoji ai loro sinonimi.

L'intero processo è descritto qui: http://jolicode.com/blog/search-for-emoji-with-elasticsearch (disclaimer: io sono l'autore).