2011-01-09 4 views

Antwort

26

Ich schlage vor, Sie lesen Full Text Search Engines vs. DBMS. Ein One-Liner wäre: Wenn der Großteil Ihres Anwendungsfalls eine Volltextsuche ist, verwenden Sie Lucene. Wenn der Großteil Ihres Anwendungsfalls Verknüpfungen und andere relationale Operationen ist, verwenden Sie eine Datenbank. Sie können eine Hybridlösung für einen komplizierteren Anwendungsfall verwenden.

+0

Ich habe "unsere Website suchen" in vielen Websites gesehen. Wenn ich den Inhalt von Websites durchsuchen soll, was wäre dann besser? –

+1

Bei der Suche nach einer Site handelt es sich um eine Volltextsuche. Daher ist Lucene besser. Besser noch, benutze Solr: http://lucene.apache.org/solr/ –

+0

@YuvalF wenn die Datenbank nicht groß ist und der Benutzer dieser Seite nicht so viele ist, ist DBMS-basierte Volltextabfrage genug? denn manchmal, wenn dieser Typ Lucene benutzen will, muss er es selbst entwickeln ... – hugemeow

1

Lucene-Suche hat einen Vorteil der Indizierung. This Beitrag kann Ihnen helfen, Lucene zu verstehen.

+0

Ich denke, wir können auch Index für Datenbanktabelle hinzufügen. aber ich habe keine Ahnung was es ist? –

18

Verwenden Lucene, wenn Sie indizieren Text wollen Dokumente (beliebiger Länge) und für Text in diesen Dokumenten suchen, eine Rangliste der Dokumente Rückkehr, die die Suchkriterien angepasst. Das klassische Beispiel sind Suchmaschinen wie Google, die Text-Indexer wie Lucene verwenden, um den Inhalt von Webseiten zu indexieren und abzufragen.

Die Vorteile von Lucene über eine Datenbank wie MySQL verwenden, für die Indizierung und Suche Text sind:

  • für die Entwickler - Werkzeuge zur Analyse, analysieren und Textinformationen Index (zB ergeben, Plurale, Synonyme, Tokenisierung) in mehreren Sprachen. Lucene skaliert auch sehr gut für die Textsuche.
  • für den Benutzer - Suchergebnisse. Lucene verwendet eine sehr gute similarity function (um die Suchanfrage für jedes Dokument zu vergleichen), in deren Zentrum die Cosine Similarity und Inverse Term/Document Frequenz sind. Dies führt zu guten Suchergebnissen mit sehr wenigen Anpassungen im Voraus erforderlich.

Viele useful info on Lucene here.

+0

gibt es eine vorteilhaftere Alternative zu Lucene. Opensource oder Inhaber (Paid oder REST API) –

2

Wir verwendeten Sql Server bei der Arbeit, um einige Abfragen, die Volltextsuche verwendet. Bei großen Datenmengen erzeugt Sql einen inneren Join zwischen der Ergebnismenge, die von der FullText-Suche zurückgegeben wird, und dem Rest der Abfrage, die langsam sein kann, wenn die Datenbank auf dem leistungsschwachen Rechner läuft (2 GB RAM für 20 GB Daten). Das Umschalten derselben Abfrage auf Lucene verbesserte die Geschwindigkeit erheblich.