2009-12-30 8 views
5

Tengo algunos documentos que contienen secuencias como radio/tested que me gustaría volver éxitos en las consultas comoDesactivación `file` token de tipo PostgreSQL 8.4 tsvector del analizador

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

Por desgracia, el analizador por defecto toma radio/tested como file token (a pesar de estar en un entorno de Windows), por lo que no coincide con la consulta anterior. Cuando ejecuto ts_debug en él, es cuando veo que está siendo reconocido como un archivo, y el lexema termina siendo radio/tested en lugar de los dos lexemas radio y test.

¿Hay alguna forma de configurar el analizador para que no busque file tokens? Probé

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

... pero no cambiar la salida de ts_debug. Si hay alguna forma de deshabilitar file, o al menos hacer que reconozca file y todas las palabras que cree que conforman los nombres de directorio a lo largo del camino, o si hay una manera de hacerlo tratar las barras como guiones o espacios (sin el golpe de rendimiento de regexp_replace ing them yo mismo) que sería realmente útil.

Respuesta

5

Creo que la única manera de hacer lo que desea es crear su propio analizador :-(Copie wparser_def.c en un nuevo archivo, elimine de las tablas de análisis (actionTPS_Base y las siguientes) las entradas relacionadas con archivos (TPS_InFileFirst, TPS_InFileNext etc), y que debe ser fijado. creo que la principal dificultad está haciendo el módulo se ajusta a lenguaje C de PostgreSQL (PG_FUNCTION_INFO_V1 y así sucesivamente). Echa un vistazo a contrib/test_parser/ para un ejemplo.

+0

Oh Dios. .. eso es desafortunado. Gracias por responder y por los consejos, me alegra saber lo que implica. – Kev

Cuestiones relacionadas