PostgreSQL, PHP - Как оформить поиск в базе данных? - PullRequest
0 голосов
/ 05 апреля 2011

Мне нужно разработать форму поиска и код за ней.

Я не очень знаком с поисками.

Моя таблица имеет следующий аспект:

- Table_ads
site_name
ad_type
uri
pagetitle
name_ad
general_description_ad
age
country_ad
location_ad
zone_ad

Изначально моя идея заключалась в том, чтобы выполнить поиск, подобный Google, у нас есть одно текстовое поле и кнопка поиска, но я думаю, что это будет сложно. Другой вариант - построить поиск по полям (традиционный поиск)

Что вы думаете об этом предмете? Какой тип поиска я должен делать?

С наилучшими пожеланиями,

PS: Извините, мой английский.

1 Ответ

1 голос
/ 12 января 2012

Для поиска в стиле google лучше всего использовать решение для полнотекстового поиска (FTS).

PostgreSQL 8.3 и новее имеет встроенный механизм FTS, и он позволит вам выполнять все запросы в SQL. Пример:

SELECT uri FROM ads WHERE fts @@ plainto_tsquery('cereal');

См. Документацию -> http://www.postgresql.org/docs/current/static/textsearch.html и возвращайтесь, если у вас есть дополнительные вопросы: -)

Однако FTS в базе данных в несколько раз медленнее, чем выделенная FTS.

Так что, если вам нужна более высокая производительность, вам придется создать индекс вне базы данных,

Здесь я бы порекомендовал Sphinx -> http://sphinxsearch.com/docs/current.html, Sphinx плавно интегрируется с PHP. Вы подаете его с документами (предпочтительно в форме специального XML-документа) и обновляете индекс по требованию или с помощью какого-либо планировщика. Затем вы выполняете поиск непосредственно из PHP (не касаясь базы данных).

НТН.

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