12.5. Анализаторы #

Задача анализаторов текста — разделить текст документа на фрагменты и присвоить каждому из них тип из набора, определённого в самом анализаторе. Заметьте, что анализаторы не меняют текст — они просто выдают позиции предполагаемых слов. Вследствие такой ограниченности их функций, собственные специфические анализаторы бывают нужны гораздо реже, чем собственные словари. В настоящее время в PostgreSQL есть только один встроенный анализатор, который может быть полезен для широкого круга приложений.

Этот встроенный анализатор называется pg_catalog.default. Он распознаёт 23 типа фрагментов, перечисленные в Таблице 12.1.

Таблица 12.1. Типы фрагментов, выделяемых стандартным анализатором

ПсевдонимОписаниеПример
asciiwordСлово только из букв ASCIIelephant
wordСлово из любых буквmañana
numwordСлово из букв и цифрbeta1
asciihwordСлово только из букв ASCII с дефисамиup-to-date
hwordСлово из любых букв с дефисамиlógico-matemática
numhwordСлово из букв и цифр с дефисамиpostgresql-beta1
hword_asciipartЧасть слова с дефисами, только из букв ASCIIpostgresql в словосочетании postgresql-beta1
hword_partЧасть слова с дефисами, из любых буквlógico или matemática в словосочетании lógico-matemática
hword_numpartЧасть слова с дефисами, из букв и цифрbeta1 в словосочетании postgresql-beta1
emailАдрес электронной почтыfoo@example.com
protocolПрефикс протоколаhttp://
urlURLexample.com/stuff/​index.html
hostИмя узлаexample.com
url_pathПуть в адресе URL/stuff/index.html, как часть URL
fileПуть или имя файла/usr/local/foo.txt, если не является частью URL
sfloatНаучная запись числа-1.234e56
floatДесятичная запись числа-1.234
intЦелое со знаком-1234
uintЦелое без знака1234
versionНомер версии8.3.0
tagТег XML<a href=​"dictionaries.html">
entityСущность XML&amp;
blankСимволы-разделители(любые пробельные символы или знаки препинания, не попавшие в другие категории)

Примечание

Понятие «буквы» анализатор определяет исходя из локали, заданной для базы данных, в частности параметра lc_ctype. Слова, содержащие только буквы из ASCII (латинские буквы), распознаются как фрагменты отдельного типа, так как иногда бывает полезно выделить их. Для многих европейских языков типы фрагментов word и asciiword можно воспринимать как синонимы.

email принимает не все символы, которые считаются допустимыми по стандарту RFC 5322. В частности, имя почтового ящика помимо алфавитно-цифровых символов может содержать только точку, минус и подчёркивание.

tag поддерживает не все действительные имена тегов, определённые в Рекомендации W3C по XML. А именно поддерживаются только имена тегов, которые начинаются с буквы из ASCII, знака подчёркивания или двоеточия и содержат только буквы, цифры, дефисы, знаки подчёркивания и двоеточия. tag также включает комментарии XML, начинающиеся с <!-- и заканчивающиеся -->, и объявления XML (однако обратите внимание, что сюда входит всё, что начинается с <?x и заканчивается >).

Анализатор может выделить в одном тексте несколько перекрывающихся фрагментов. Например, слово с дефисом будет выдано как целое составное слово и по частям:

SELECT alias, description, token FROM ts_debug('foo-bar-beta1');
      alias      |               description                |     token
-----------------+------------------------------------------+--------------
 numhword        | Hyphenated word, letters and digits      | foo-bar-beta1
 hword_asciipart | Hyphenated word part, all ASCII          | foo
 blank           | Space symbols                            | -
 hword_asciipart | Hyphenated word part, all ASCII          | bar
 blank           | Space symbols                            | -
 hword_numpart   | Hyphenated word part, letters and digits | beta1

Это поведение считается желательным, так как это позволяет находить при последующем поиске и всё слово целиком, и его части. Ещё один показательный пример:

SELECT alias, description, token FROM ts_debug('http://example.com/stuff/index.html');
  alias   |  description  |            token
----------+---------------+------------------------------
 protocol | Protocol head | http://
 url      | URL           | example.com/stuff/index.html
 host     | Host          | example.com
 url_path | URL path      | /stuff/index.html
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy