2009-12-30 8 views
5

ho alcuni documenti che contengono sequenze come radio/tested che vorrei tornare successi nelle query comeLa disattivazione del PostgreSQL 8.4 tsvector del parser `tipo file` di token

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

Purtroppo, il parser di default prende radio/tested come file token (nonostante sia in ambiente Windows), quindi non corrisponde alla query precedente. Quando eseguo ts_debug su di esso, è quando vedo che viene riconosciuto come un file, e il lexeme finisce per essere radio/tested piuttosto che i due lessemi radio e test.

C'è un modo per configurare il parser per non cercare i token file? Ho provato

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

... ma non ha cambiato l'uscita di ts_debug. Se c'è un modo per disabilitare file, o almeno averlo riconosciuto sia file e tutte le parole che pensa compongano i nomi delle directory lungo la strada, o se c'è un modo per farlo trattenere le barre come trattini o spazi (senza il colpo di prestazioni di regexp_replace loro stessi) che sarebbe davvero utile.

risposta

5

Penso che l'unico modo per fare ciò che vuoi è creare il tuo parser :-(Copia wparser_def.c in un nuovo file, rimuovi dalle tabelle di analisi (actionTPS_Base e quelle che lo seguono) le voci che riguardano file (TPS_InFileFirst, TPS_InFileNext ecc), e si dovrebbe essere a posto. penso che la difficoltà principale sta facendo il modulo conforme al linguaggio C di PostgreSQL (PG_FUNCTION_INFO_V1 e così via). Date un'occhiata al contrib/test_parser/ per un esempio.

+0

Oh Gosh. ..è una sfortuna. Grazie per la risposta e per i suggerimenti, sono felice di sapere cosa comporta. – Kev

Problemi correlati