Полнотекстовый поиск в PostgreSQL и MySQL - PullRequest
8 голосов
/ 27 сентября 2008

Как сравниваются системы полнотекстового поиска PostgreSQL и MySQL? Разве одно явно лучше одера? Чем они отличаются?

Ответы [ 6 ]

6 голосов
/ 29 сентября 2008

PostgreSQL 8.3 имеет встроенный полнотекстовый поиск, который является интегрированной версией "tsearch2"

Вот документация: http://www.postgresql.org/docs/8.3/static/textsearch.html

И пример из документации:

SELECT title
FROM pgweb
WHERE to_tsvector(body) @@ to_tsquery('friend');

Где тело - это текстовое поле. Вы можете индексировать специально для этих типов поиска, и, конечно, они могут стать более сложными, чем этот простой пример. Функциональность очень хорошая, и стоит принять решение, когда вы принимаете решение.

Удачи.

5 голосов
/ 27 сентября 2008

К сожалению, я не очень разбираюсь в PostgreSQL, но если вы используете поиск FULL TEXT в MySQL, вы сразу же привязываетесь к MyISAM. Если вы хотите использовать InnoDB (и если соответствие ACID что-то значит для вас, вы должны использовать InnoDB), вы застряли, используя другие решения.

Две популярные альтернативы, которые часто используются: Lucene (проект apache с модулем Zend, если вы используете PHP) и Sphinx .

2 голосов
/ 01 мая 2009

Если вы используете Hibernate в качестве ORM, я настоятельно рекомендую использовать поиск Hibernate. Он построен на основе Lucene, поэтому он очень быстрый.

Karl

1 голос
/ 23 сентября 2009

У меня был довольно хороший опыт работы с postgresql / tsearch2, особенно с учетом того, что он был включен в стандартный дистрибутив (до версии 8.0 - я думаю - это была необязательная функция contrib, а обновление до tsearch2 потребовало небольшой работы).

Если я правильно помню, вы должны установить некоторые свойства (нечеткое соответствие, словарный материал) перед запуском, тогда как в других базах данных эти вещи гибко предоставляются с помощью самого полнотекстового синтаксиса (я думаю о Oracle Text, здесь, хотя я знаю, что это не имеет отношения к вашему вопросу).

0 голосов
/ 17 ноября 2009

Mysql полнотекстовый поиск очень медленный. Он не может обрабатывать данные более 1 миллиона (несколько десятков секунд на запрос).

У меня нет опыта использования полнотекстового поиска postgresql.

Я использовал sphinxsearch. Это очень быстрый и простой в использовании. Но это не так сильно. Я имею в виду функциональность поиска. Например, он не поддерживает как 'abc?', Где '?' обозначает любой символ.

Я тоже знаю люцен. Это мощно, но трудно учиться.

0 голосов
/ 27 сентября 2008

Я думаю, что вы можете использовать Sphinx как с MySQL, так и с Postgres. Вот статья , объясняющая, как использовать Sphinx с MySQL (вы можете добавить его в качестве плагина)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...