2012-05-08 7 views

risposta

3

Attualmente non è possibile fare vera ricerca a testo integrale entro mongo: http://www.mongodb.org/display/DOCS/Full+Text+Search+in+Mongo

Sentitevi liberi di votare per esso qui: https://jira.mongodb.org/browse/SERVER-380

Mongo è più di un data scalabile general purpose store, e al momento non ha alcun supporto per la ricerca full-text. A seconda del tuo caso d'uso, potresti usare gli indici b-tree standard con una matrice di tutte le parole nel testo, ma non farà corrispondenze o corrispondenze fuzzy, ecc.

Tuttavia, consiglierei di combinare mongodb con un'applicazione basata su lucene (la ricerca elastica è popolare). È possibile memorizzare tutti i dati in mongodb (dati binari, metadati, ecc.) E quindi indicizzare il testo in chiaro dei documenti in lucene. Oppure, se il tuo caso d'uso è puro ricerca full-text, potresti prendere in considerazione la semplice ricerca elastica invece di mongodb.

Aggiornamento (aprile 2013): MongoDB 2.4 ora supporta un indice di testo completo di base! Alcune risorse utili di seguito.

http://docs.mongodb.org/manual/applications/text-search/

http://docs.mongodb.org/manual/reference/command/text/#dbcmd.text

http://blog.mongohq.com/blog/2013/01/22/first-week-with-mongodb-2-dot-4-development-release/

+1

MongoDB 2.4 ora supporta la ricerca full-text. –

+0

Vero. Suppongo che dovrei aggiornarlo. –

+1

MongoDB 2.6 ora ha la ricerca full-text come parte dei suoi normali operatori di query (fino al 2.4, dovevi usare db.runCommand). Tuttavia, non puoi effettuare alcun tipo di ricerca all'interno di un file gridfs. Sono solo blocchi binari e mongo li tratterà in modo non diverso se sono parti di un'immagine o di capitoli di un libro di testo. – amenadiel

0

Non utilizzare le API MongoDB, non che io sappia. GridFS sembra essere designed to be more like a simplified file system con API che fornisce una semplice semantica del valore-chiave. Sulla loro pagina project ideas elencano due cose che vi aiutano a se esistito in pronto per la produzione di stato:

  • GridFS FUSE che permetterebbe di montare GridFS come un file system locale e quindi indice di esso come se fosse roba indice sul vostro disk
  • Integrazione della ricerca in full-text in tempo reale con strumenti come Lucene e Solr. Ci sono alcuni progetti su github e bitbucket che potresti voler controllare.

Vedere anche ElasticSearch. Ho visto some integration with Mongo ma non sono sicuro di quanto è stato fatto to tap into the GridFS (il supporto per l'allegato GridFS è menzionato ma non ho lavorato con esso per sapere con certezza). Forse sarai tu a costruirlo e poi aprirlo? dovrebbe essere una divertente avventura

+1

GridFS fusibile è irrimediabilmente obsoleto. –