Отключение типа маркера PostgreSQL 8.4 tsvector 'файла' синтаксического анализатора

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

select * from doc
where to_tsvector('english',body) @@ to_tsvector('english','radio')

К сожалению, синтаксический анализатор по умолчанию берет radio/tested как a file маркер (несмотря на то, чтобы быть в среде Windows), таким образом, это не соответствует вышеупомянутому запросу. Когда я работаю ts_debug на нем именно тогда я вижу, что это распознается как файл, и лексема заканчивает тем, что была radio/tested вместо этих двух лексем radio и test.

Есть ли любой способ настроить синтаксический анализатор для не поиска file маркеры? Я попробовал

ALTER TEXT SEARCH CONFIGURATION public.english
    DROP MAPPING FOR file;

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

6
задан Kev 30 December 2009 в 14:21
поделиться

1 ответ

Я думаю, что единственный способ сделать то, что вы хотите, это создать свой собственный парсер :-( Copy wparser_def. c в новый файл, удалите из таблиц парсинга (actionTPS_Base) и следующие за ним) записи, относящиеся к файлам (TPS_InFileFirst, TPS_InFileNext и т.д.), и вы должны быть установлены. Думаю, основная сложность заключается в том, чтобы сделать модуль соответствующим C idiom PostgreSQL (PG_FUNCTION_INFO_V1 и т.д.). Взгляните на contrib/test_parser/ для примера.

.
5
ответ дан 17 December 2019 в 04:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: