postgres中的中文分詞zhparser


postgres中的中文分詞zhparser

postgres中的中文分詞方法

基本查了下網絡,postgres的中文分詞大概有兩種方法:

  • Bamboo
  • zhparser

其中的Bamboo安裝和使用都比較復雜,所以我選擇的是zhparser

zhparse基於scws

scws是簡易中文分詞系統的縮寫,它的原理其實很簡單,基於詞典,將文本中的內容按照詞典進行分詞,提取關鍵字等。github上的地址在這里。它是xunsearch的核心分詞系統。

zhparser是基於scws來做的postgres的擴展。

安裝

基本按照zhparser 中的步驟就可以了。

使用

在postgres.conf中你可以設置下面的參數:

zhparser.punctuation_ignore = f

zhparser.seg_with_duality = f

zhparser.dict_in_memory = f

zhparser.multi_short = f

zhparser.multi_duality = f

zhparser.multi_zmain = f

zhparser.multi_zall = f

還可以設置自有詞典

zhparser.extra_dicts = 'dict_extra.txt,mydict.xdb'

雖然項目文檔說用txt也是可以的,但是我自己嘗試過的時候,自有詞典只能使用xdb

sql使用

按照文檔說明

CREATE EXTENSION zhparser;
CREATE TEXT SEARCH CONFIGURATION testzhcfg (PARSER = zhparser);
ALTER TEXT SEARCH CONFIGURATION testzhcfg ADD MAPPING FOR n,v,a,i,e,l WITH simple;

在這三步之后,你就創建了一個testzhcfg的解析器

to_tsvector, to_tsquery 其實都是有第一個參數的,第一個參數表示解析器是什么。比如你想要進行文本搜索,可以使用下面的語句:

SELECT id FROM question_view
            WHERE to_tsvector('testzhcfg', content) @@ to_tsquery('testzhcfg', '寶馬') AND status = 1  ORDER BY id DESC

這個語句是基於視圖question_view的


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM