sql >> Database >  >> RDS >> PostgreSQL

Is er een reden om PostgreSQL's ingebouwde zoekfunctie voor volledige tekst op Heroku niet te gebruiken?

Bewerken, 2016 — Waarom niet allebei?

Als je geïnteresseerd bent in Postgres vs. Lucene, waarom niet allebei? Bekijk de ZomboDB extensie voor Postgres, die Elasticsearch integreert als een eersteklas indextype. Nog een vrij vroeg project, maar het ziet er veelbelovend uit voor mij.

(Technisch niet beschikbaar op Heroku, maar toch het bekijken waard.)

Openbaarmaking:ik ben medeoprichter van de Websolr en Bonsai Heroku-add-ons, dus mijn perspectief is een beetje bevooroordeeld in de richting van Lucene.

Ik heb gelezen over Postgres zoeken in volledige tekst is dat het behoorlijk solide is voor eenvoudige gebruiksscenario's, maar er zijn een aantal redenen waarom Lucene (en dus Solr en ElasticSearch) superieur is, zowel wat betreft prestaties als functionaliteit.

Om te beginnen, jpountz biedt een werkelijk uitstekend technisch antwoord op de vraag, Waarom is Solr zoveel sneller dan Postgres? Het is een paar keer doorlezen waard om het echt te verwerken.

Ik heb ook gereageerd op een recente RailsCast-aflevering het vergelijken van relatieve voor- en nadelen van Postgres full-text zoeken versus Solr. Laat me dat hier samenvatten:

Pragmatische voordelen voor Postgres

  • Hergebruik een bestaande service die u al gebruikt in plaats van iets anders in te stellen en te onderhouden (of te betalen).
  • Veel beter dan de fantastisch trage SQL LIKE operator.
  • Minder gedoe om gegevens gesynchroniseerd te houden omdat ze allemaal in dezelfde database staan ​​- geen integratie op applicatieniveau met een of andere externe gegevensservice-API.

Voordelen voor Solr (of ElasticSearch)

Uit mijn hoofd, in willekeurige volgorde...

  • Schaal uw indexering en zoekbelasting apart van uw normale databasebelasting.
  • Flexibelere termanalyse voor zaken als normalisering van accenten, taalkundige stammen, N-grammen, opmaakverwijdering... Andere coole functies zoals spellingcontrole, extractie van "rijke inhoud" (bijv. PDF en Word)...
  • Solr/Lucene kan alles op de Postgres TODO-lijst met volledige tekst zoeken prima.
  • Veel betere en snellere rangschikking van relevantie van termen, efficiënt aanpasbaar tijdens het zoeken.
  • Waarschijnlijk snellere zoekprestaties voor veelvoorkomende termen of gecompliceerde zoekopdrachten.
  • Waarschijnlijk efficiëntere indexeringsprestaties dan Postgres.
  • Betere tolerantie voor wijzigingen in uw gegevensmodel door indexering los te koppelen van uw primaire gegevensopslag

Het is duidelijk dat ik denk dat een speciale zoekmachine op basis van Lucene hier de betere optie is. In principe kun je Lucene zien als de de facto open source opslagplaats van zoekexpertise.

Maar als uw enige andere optie de LIKE . is operator, dan is Postgres zoeken in volledige tekst een duidelijke overwinning.



  1. Automatisch trimmen van CHAR-gegevens bij invoegen in VARCHAR-kolom

  2. Toon MySQL-resultaten op datum

  3. Update Query-probleem in asp.net c# en Mysql met odbc

  4. Problemen bij het gebruik van MySQL in combinatie met Emacs