Domanda

Abbiamo un'app Web che consente agli utenti di caricare documenti, creare i propri documenti e così via. I file caricati vengono archiviati su Amazon S3, le informazioni create vengono archiviate in un database MySQL. Quello che sto cercando è una sorta di motore di ricerca, dove lo alimento tutti i nostri documenti di testo, ciascuno con un ID univoco, e crea un indice o altro. Successivamente, posso fornirgli query di ricerca e estrarrà i migliori documenti corrispondenti (tramite il loro ID), insieme a frammenti di testo corrispondente.

Fondamentalmente vogliamo consentire ai nostri utenti di cercare nel loro repository di elementi caricati, insieme a tutto ciò che altri utenti hanno contrassegnato come pubblico. La soluzione dovrebbe essere eseguita su un server Linux standard e idealmente sarebbe open source, ma prenderò in considerazione soluzioni a pagamento se non hanno un prezzo esagerato.

Finora ho trovato tre potenziali candidati:

  1. Ricerca di testo completo MySQL - alcuni report Ho letto che è molto lento
  2. Apache Lucene - purtroppo scritto in Java, ma userò se devo. Presumibilmente veloce
  3. Sphinx - non sembra essere così popolare, idealmente qualunque soluzione trovo avrà un sacco di supporto della comunità.

Per favore fatemi sapere se ci sono altre buone scelte che ho trascurato, o se avete esperienza con una delle precedenti.

È stato utile?

Soluzione

Dai un'occhiata a Solr . È basato su Lucene, quindi è molto veloce ed è davvero facile da usare da qualsiasi piattaforma.

Altri suggerimenti

Sphinx può valere la pena di essere preso in considerazione, poiché funziona bene con diversi RDMS comuni (in particolare MySQL)

C'è anche Xapian che è veloce ed è abbastanza personalizzabile.

Ha il supporto per indicizzatori personalizzati che consente di indicizzare i dati che non sono memorizzati in un database, il che potrebbe essere utile per i tuoi documenti archiviati su S3.

Immagino che Google avrà una soluzione che soddisfi le tue esigenze. Inizia qui: Google Enterprise

Esiste un porto Ruby di Lucene chiamato " Furetto " ;. Oltre all'API Ruby, puoi ottenere l'implementazione c sottostante chiamata " cFerret " ;.

Lucene è molto brava. E sebbene sia stato originariamente scritto in Java, esiste un'implementazione php http: / /framework.zend.com/manual/en/zend.search.lucene.html

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