PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Има ли причина да не използвате вграденото търсене на пълен текст на PostgreSQL на Heroku?

Редактиране, 2016 г. — Защо не и двете?

Ако се интересувате от Postgres срещу Lucene, защо не и двете? Вижте ZomboDB разширение за Postgres, което интегрира Elasticsearch като първокласен тип индекс. Все още е доста ранен проект, но ми изглежда наистина обещаващ.

(Технически не се предлага на Heroku, но все пак си струва да се разгледа.)

Разкриване:Аз съм съосновател на Websolr и бонсаи Heroku добавки, така че моята гледна точка е малко предубедена към Lucene.

Моето четене за пълнотекстово търсене в Postgres е, че е доста стабилно за прости случаи на употреба, но има редица причини, поради които Lucene (и следователно Solr и ElasticSearch) превъзхожда както по отношение на производителност, така и на функционалност.

Като начало, jpountz предоставя наистина отличен технически отговор на въпроса, Защо Solr е толкова по-бърз от Postgres? Струва си да се прочетат няколко пъти, за да се усвои наистина.

Също така коментирах скорошен епизод на RailsCast сравняване на относителните предимства и недостатъци на търсенето в пълен текст на Postgres спрямо Solr. Нека повторя това тук:

Прагматични предимства на Postgres

  • Използвайте повторно съществуваща услуга, която вече изпълнявате, вместо да настройвате и поддържате (или плащате за) нещо друго.
  • Далеч превъзхожда фантастично бавния SQL LIKE оператор.
  • По-малко проблеми при поддържане на данни в синхрон, тъй като всички те са в една и съща база данни — без интеграция на ниво приложение с API за външни услуги за данни.

Предимства пред Solr (или ElasticSearch)

От върха на главата ми, без определен ред...

  • Мащабирайте натоварването си при индексиране и търсене отделно от редовното натоварване на базата данни.
  • По-гъвкав анализ на термини за неща като нормализиране на акцента, лингвистичен корен, N-грами, премахване на маркиране… Други готини функции като проверка на правописа, извличане на „богато съдържание“ (напр. PDF и Word)…
  • Solr/Lucene може да прави всичко в списък TODO за пълнотекстово търсене на Postgres добре.
  • Много по-добро и по-бързо класиране по уместност на термина, ефективно адаптивно по време на търсене.
  • Вероятно по-бързо търсене за общи термини или сложни заявки.
  • Вероятно по-ефективно индексиране от Postgres.
  • По-добра толерантност към промяна във вашия модел на данни чрез отделяне на индексирането от основното ви хранилище на данни

Очевидно смятам, че специална търсачка, базирана на Lucene, е по-добрият вариант тук. По принцип можете да мислите за Lucene като де факто хранилище с отворен код на опит в търсенето.

Но ако единствената ви друга опция е LIKE оператор, тогава търсенето в пълен текст на Postgres е определено предимство.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да създадете индекс за елементи от масив в PostgreSQL?

  2. Премахване и създаване на ENUM със секвенизиране правилно?

  3. доктрина JSON колона в postgresql съхранява обекти или масиви от едни и същи данни

  4. Импортирайте необработени байтове като необработени байтове в R

  5. PostgreSQL конвертира колони в редове? Транспониране?