sql >> Database teknologi >  >> RDS >> PostgreSQL

Enhver grund til ikke at bruge PostgreSQL's indbyggede fuldtekstsøgning på Heroku?

Rediger, 2016 — Hvorfor ikke begge dele?

Hvis du er interesseret i Postgres vs. Lucene, hvorfor så ikke begge dele? Tjek ZomboDB udvidelse til Postgres, som integrerer Elasticsearch som en førsteklasses indekstype. Stadig et ret tidligt projekt, men det ser virkelig lovende ud for mig.

(Teknisk ikke tilgængelig på Heroku, men stadig værd at se på.)

Offentliggørelse:Jeg er medstifter af Websolr og Bonsai Heroku-tilføjelser, så mit perspektiv er en smule forudindtaget i forhold til Lucene.

Min læsning på Postgres fuldtekstsøgning er, at den er ret solid til ligetil brug, men der er en række grunde til, at Lucene (og dermed Solr og ElasticSearch) er overlegne både med hensyn til ydeevne og funktionalitet.

Til at begynde med, jpountz giver et virkelig fremragende teknisk svar på spørgsmålet, Hvorfor er Solr så meget hurtigere end Postgres? Det er værd at læse igennem for virkelig at fordøje.

Jeg kommenterede også en nylig RailsCast episode sammenligne relative fordele og ulemper ved Postgres fuldtekstsøgning versus Solr. Lad mig opsummere det her:

Pragmatiske fordele ved Postgres

  • Genbrug en eksisterende tjeneste, som du allerede kører i stedet for at konfigurere og vedligeholde (eller betale for) noget andet.
  • Langt overlegen i forhold til den fantastisk langsomme SQL LIKE operatør.
  • Mindre besvær med at holde data synkroniseret, da det hele er i den samme database – ingen integration på applikationsniveau med en ekstern datatjeneste-API.

Fordele ved Solr (eller ElasticSearch)

Ud af mit hoved, uden nogen særlig rækkefølge...

  • Skalér din indekserings- og søgebelastning separat fra din almindelige databasebelastning.
  • Mere fleksibel termanalyse for ting som accentnormalisering, sproglig stemming, N-gram, fjernelse af markeringer... Andre fede funktioner som stavekontrol, "rigt indhold" (f.eks. PDF og Word) udvinding...
  • Solr/Lucene kan gøre alt på Postgres fuldtekstsøgning TODO-listen helt fint.
  • Meget bedre og hurtigere rangering af udtryksrelevans, der kan tilpasses effektivt på søgetidspunktet.
  • Sandsynligvis hurtigere søgeydelse for almindelige termer eller komplicerede forespørgsler.
  • Sandsynligvis mere effektiv indekseringsydelse end Postgres.
  • Bedre tolerance over for ændringer i din datamodel ved at afkoble indeksering fra dit primære datalager

Jeg synes klart, at en dedikeret søgemaskine baseret på Lucene er den bedre mulighed her. Grundlæggende kan du tænke på Lucene som de facto open source-lageret for søgeekspertise.

Men hvis din eneste anden mulighed er LIKE operatør, så er Postgres fuldtekstsøgning en klar gevinst.



  1. MySQL-indkøbsvognsstruktur

  2. Glemt SQL Server-adgangskode

  3. 7 måder at finde dublerede rækker i PostgreSQL, mens du ignorerer den primære nøgle

  4. SQL VÆLG MIN