2015-02-04 19 views
6

Sto costruendo un'API REST utilizzando Laravel per un'applicazione mobile. E ora ho bisogno di un motore di ricerca.Motore di ricerca Laravel

Prima di tutto, non ho mai usato alcun motore di ricerca. Quindi sto cercando uno di quelli semplici con cui lavorare, ma sempre valido per la ricerca e il filtraggio "dove"

La tabella su cui voglio eseguire le ricerche ha 1 colonna (varchar45) che deve essere cercata per ricerca di testo completo, e allora ci sono 5 colonne (int) che sono usate per filtrare usando un'istruzione "where". Usando l'approccio mysql. Eseguo anche un join interno su quel tavolo per stampare altre cose durante la generazione del risultato.

Così ho guardato sfinge e elasticsearch, e ha deciso di andare con ES.

Ho guardato la ES modulo intro Laracon: https://www.youtube.com/watch?v=waTWeJeFp4A

e ho anche preso uno sguardo a questo pacchetto: https://github.com/freekmurze/searchindex

che mi ha lasciato con un paio di domande:

1) Do Lascio il mio DB mysql e memorizzo solo i miei dati ALL in ES?

2) Se 1-sì, posso ancora utilizzare il mio DB mysql e utilizzare ES per memorizzare gli indici? - Dal momento che devo solo eseguire una ricerca su una tabella (cercare un totale di 5 righe).

Se 2-sì, mantengo ancora i miei indici correnti nella mia tabella mysql? Ad esempio, indice di testo completo sulla colonna del titolo, FK su un'altra colonna e indice su altri 3.

Poiché questa è la prima volta che io abbia mai usare un motore di ricerca, c'è qualche altro tutorial/libro/frammento là fuori su come utilizzare ES con laravel?

Grazie in anticipo

+0

Personalmente continuo a memorizzare tutte le informazioni su MySQL, ho appena memorizzare grandi tavoli a elasticsearch e lo uso per la ricerca solo nelle grandi dati, dove indice completo è lento, o ho bisogno di ottenere risultati ordinati. Ricorda inoltre che sarebbe opportuno archiviare i dati in una sorta di database. Memorizzare tutte le informazioni su ES non va bene, perché per quanto ne so non esiste un modo rapido per esportare dati ES e solo importarli su un altro server. E se si sceglie di utilizzare ancora MySQL con ES, mantenere solo gli indici necessari (ad esempio se non si sta cercando per testo completo, rimuoverlo). – sanis

risposta

8

stavo risolvendo gli stessi problemi di recente. Le mie opinioni:

1. no. sicuramente conservare il tuo DB per la memorizzazione dei dati. ES non è stato creato per sostituire il tuo database. è (soprattutto) motore di ricerca.

4. è possibile trovare un buon tutorial qui: (come punto di partenza).
io suggerisco di leggere anche http://www.elasticsearch.org/guide/en/elasticsearch/guide/ (per capire ES meglio)

+0

Grazie Igor. Quindi ho solo una copia di quel tavolo in ES. Ho trovato questo tutorial prima ed è fantastico. L'ho anche collegato nel forum di laracasts da quando ho visto un sacco di persone che chiedono di ES. In questo momento sto affrontando un nuovo problema nel caso abbiate il tempo di esaminarlo. Prima di tutto - non posso mappare i timestamp MySql in ES, ho provato long/timestamp/interi nessuno funziona. Puoi vedere di più su https://stackoverflow.com/questions/28433724/cant-map-mysql-timestamp-into-elasticsearch – user2722667

+0

In secondo luogo, ho un problema con la funzione di ordinamento ES. La mia query assomiglia a $ sort = ['sort' => ['id' => 'desc']]; $ posts = Post :: searchByQuery ($ query, null, null, null, null, $ sort); – user2722667

Problemi correlati