2015-01-23 19 views
10

Come procedere per la creazione di Elasticsearch in modo che restituisca risultati personalizzati?Risultati di ricerca personalizzati per Elasticsearch

Ad esempio, vorrei che i risultati restituiti a un determinato utente aumentino di livello se hanno fatto clic su un risultato in precedenza o se hanno "interpretato" quel risultato nel passato. Potresti anche avere un'opzione "nascondi" che spinge i risultati più in basso nella classifica. Da quanto ho visto finora con elasticsearch, sembra difficile restituire classifiche diverse agli utenti in base ai dati dinamici dell'utente stesso.

La soluzione dovrebbe essere ridimensionata a migliaia di utenti che eseguono una dozzina circa di ricerche al giorno. Idealmente, vorrei che la classifica cambiasse in tempo reale, ma non è critica.

+1

se hai risolto questo, puoi condividere alcune informazioni? Sto cercando di implementare una funzionalità molto simile, ma la risposta di seguito non ha abbastanza informazioni per me. – ivant

risposta

7

Elasticsearch offre una vasta gamma di opzioni di punteggio, ma per ottenere ciò che è stato detto è necessario eseguire alcune attività aggiuntive.

Function score query e documento terms lookup terms filter sarebbero i nostri strumenti di nostra scelta

Innanzitutto creare un documento per ogni utente, raccontando i collegamenti o link ID lui visitate e i link che ha voluto. Questo dovrebbe essere ospitato separatamente come indice separato. E questo dovrebbe essere mantenuto dall'utente, come dovrebbe aggiornare e mantenere questo record dal lato client.

Ora, quando un utente raggiunge l'indice dei dati, esegue una query sul punteggio della funzione con funzione di filtro che punta a questi campi.

In questo approccio, poiché il filtro viene memorizzato nella cache, è necessario ottenere prestazioni decenti.

+1

Vineeth, questo è molto simile a quello di cui ho bisogno. Ma il mio elasticsearch-fu non è ancora così bello, quindi puoi pubblicare o indicarmi alcuni esempi? – ivant

Problemi correlati