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