Записки программиста, обо всем и ни о чем. Но, наверное, больше профессионального.

2009-08-06

PostgreSQL, Полнотекстовый поиск

Очень интересная тема. Статья знакомит с кухней полнотекстового поиска. Читать в два приема, сначала прочесть часть до "конфигураций". Часа через два прочесть остаток.

Хотя тема поиска произвольного текста очень хорошо освещена в превосходной документации PostgreSQL, эта статья может служить введением для тех, кто планирует в дальнейшем глубже изучить эту тему. Чтобы уложиться в рамки статьи, довольно много деталей пропущено, так что мы полагаемся на способность читателя додумывать то, о чём не сказано явно.
...
Для PostgreSQL поддерживается чувствительная к регистру символов проверка фраз на соответствие с использованием оператора LIKE, а также нечувствительная к регистру проверка с помощью оператора ILIKE. Для поиска текста "free text and 'Postgres text search'" запрос может выглядеть следующим образом:

select headline, ts_rank(tsv, query)
from pgweb, to_tsquery('free & text & postgres & search') query
where tsv @@ query and body ilike '%Postgres text search%';

... который использует полнотекстовый индекс для поиска статей, текст которых соответствует запросу, а затем для найденных элементов ищутся пересечения, дословно соответствующие тексту.

Просто, не правда ли?
Разбор запросов на естественном языке

Ну, не так уж и просто. Как, скажите на милость, несчастный разработчик должен преобразовать "человеческую" фразу, приведённую выше, в последующий оператор SQL? Это нетривиальная задача и, к тому же, выходящая далеко за пределы возможностей некоторых разработчиков.


rus-linux.net

Комментариев нет:

Отправить комментарий

Архив блога

Ярлыки

linux (241) python (191) citation (186) web-develop (170) gov.ru (159) video (124) бытовуха (115) sysadm (100) GIS (97) Zope(Plone) (88) бурчалки (84) Book (83) programming (82) грабли (77) Fun (76) development (73) windsurfing (72) Microsoft (64) hiload (62) internet provider (57) opensource (57) security (57) опыт (55) movie (52) Wisdom (51) ML (47) driving (45) hardware (45) language (45) money (42) JS (41) curse (40) bigdata (39) DBMS (38) ArcGIS (34) history (31) PDA (30) howto (30) holyday (29) Google (27) Oracle (27) tourism (27) virtbox (27) health (26) vacation (24) AI (23) Autodesk (23) SQL (23) humor (23) Java (22) knowledge (22) translate (20) CSS (19) cheatsheet (19) hack (19) Apache (16) Klaipeda (15) Manager (15) web-browser (15) Никонов (15) functional programming (14) happiness (14) music (14) todo (14) PHP (13) course (13) scala (13) weapon (13) HTTP. Apache (12) SSH (12) frameworks (12) hero (12) im (12) settings (12) HTML (11) SciTE (11) USA (11) crypto (11) game (11) map (11) HTTPD (9) ODF (9) Photo (9) купи/продай (9) benchmark (8) documentation (8) 3D (7) CS (7) DNS (7) NoSQL (7) cloud (7) django (7) gun (7) matroska (7) telephony (7) Microsoft Office (6) VCS (6) bluetooth (6) pidgin (6) proxy (6) Donald Knuth (5) ETL (5) NVIDIA (5) Palanga (5) REST (5) bash (5) flash (5) keyboard (5) price (5) samba (5) CGI (4) LISP (4) RoR (4) cache (4) car (4) display (4) holywar (4) nginx (4) pistol (4) spark (4) xml (4) Лебедев (4) IDE (3) IE8 (3) J2EE (3) NTFS (3) RDP (3) holiday (3) mount (3) Гоблин (3) кухня (3) урюк (3) AMQP (2) ERP (2) IE7 (2) NAS (2) Naudoc (2) PDF (2) address (2) air (2) british (2) coffee (2) fitness (2) font (2) ftp (2) fuckup (2) messaging (2) notify (2) sharepoint (2) ssl/tls (2) stardict (2) tests (2) tunnel (2) udev (2) APT (1) Baltic (1) CRUD (1) Canyonlands (1) Cyprus (1) DVDShrink (1) Jabber (1) K9Copy (1) Matlab (1) Portugal (1) VBA (1) WD My Book (1) autoit (1) bike (1) cannabis (1) chat (1) concurrent (1) dbf (1) ext4 (1) idioten (1) join (1) krusader (1) license (1) life (1) migration (1) mindmap (1) navitel (1) pneumatic weapon (1) quiz (1) regexp (1) robot (1) science (1) seaside (1) serialization (1) shore (1) spatial (1) tie (1) vim (1) Науру (1) крысы (1) налоги (1) пианино (1)