Domanda

Mi è stato assegnato il compito di creare un servizio di ricerca su un sito di e-commerce. Attualmente utilizza l'indicizzazione di testo completo sul server sql, che non è l'ideale, in quanto è lento e non così flessibile.

Come mi consiglieresti di avvicinarmi a cambiarlo in lucene? Voglio dire, come inizialmente caricare tutti i dati negli indici e come verrebbero mantenuti? sul mio " inserisci prodotto " metodi, vorrei anche inserirlo nell'indice?

qualsiasi informazione è di grande aiuto!

È stato utile?

Soluzione

Attualmente sto usando Solr, che si basa su Lucene, come motore di ricerca per uno dei miei progetti di e-commerce. Funziona benissimo.

http://lucene.apache.org/solr/

Inoltre, per quanto riguarda la sincronizzazione dei prodotti tra DB e Solr, puoi creare il tuo " sweeper " o implementare DataImportHandler in Solr.

http://wiki.apache.org/solr/DataImportHandler

Costruiamo il nostro spazzino che legge una vista DB ad un certo intervallo e controlla se ci sono nuovi prodotti o se i dati di un prodotto sono stati aggiornati. È un metodo di forza bruta e vorrei sapere prima di DataImportHandler.

Le sfaccettature sono anche una parte davvero potente di Solr. Consiglio vivamente di usarli.

Altri suggerimenti

Se decidi di utilizzare Lucene.NET per la tua ricerca, devi effettuare una delle seguenti operazioni:

  • crea il tuo indice iniziale di iterando attraverso tutti i tuoi record e scrivendo i dati desiderati cercato nel tuo indice
  • se la quantità di record e dati che stai scrivendo nei tuoi indici fa sì che gli indici di grandi dimensioni prendano in considerazione l'idea di inserirli in più indici (ciò significa che dovrai creare un programma di ricerca più complesso poiché devi cercare ogni indice e quindi unisci i risultati !!)
  • quando un prodotto viene aggiornato o creato, è necessario aggiornare l'indice (qui è presente un processo per creare parti di indice aggiuntive e quindi unire gli indici)
  • se disponi di un sito a traffico elevato e esiste la possibilità che si verifichino più ricerche nello stesso preciso istante, devi creare un wrapper in grado di effettuare la ricerca su più indici duplicati (o set di indici) (pensa modello singleton qui) poiché all'indice è possibile accedere (aperto) solo per una ricerca alla volta

Questa è un'ottima piattaforma. Inizialmente abbiamo provato a utilizzare la ricerca del freetext e abbiamo trovato doloroso creare gli indici, aggiornarli e gestirli. Le ricerche non sono state molto più veloci di una ricerca sql standard. Hanno fornito una certa flessibilità nella query di ricerca ... ma anche questo impallidisce in confronto al potere di Lucene!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top