2016-08-04 17 views
0

這按預期工作:如何爲全文搜索配置postgresql標記化?

# select to_tsvector('SICK FOTOCEL VS#VE180-P132') @@ 'p132'::tsquery; 
?column? 
---------- 
t 

然而,當「#」替換爲一個「/」我得到

# select to_tsvector('SICK FOTOCEL VS/VE180-P132') @@ 'p132'::tsquery; 
?column? 
---------- 
f 

這是因爲VS/VE180-P132被歸類爲一個文件標記。這在我們的用例中不正確。我如何改變這種行爲?例如,刪除令牌類型的電子郵件,網址和文件?

回答

0

,除非你想用C編寫

一個新的解析器

你不能改變這種行爲,但您使用它們全文檢索,然後才能使用的所有字符串替換某些字符的解決辦法:

SELECT to_tsvector(regexp_replace('SICK FOTOCEL VS/VE180-P132', '[/.]', ' ')) 
     @@ to_tsquery(regexp_replace('p132', '[/.]', ' ')); 
+0

該解決方法非常難看。但如果這真的是唯一的方法,我必須接受這個:) – rmuller

+0

你也可以像這樣定義你的索引,除非你必須手工輸入,否則它不會受到如此嚴重的傷害。 –

相關問題