<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # 3. 全文檢索系統之中文支持 #### 1. 前言 ![](https://box.kancloud.cn/2c36790f8ff338416b87a8b4f6d0d683_206x80.png) 在這篇文章中,介紹了[PostgreSQL的全文檢索系統](http://www.rails365.net/articles/postgresql-de-quan-wen-jian-suo-xi-tong),里面有提到,**PostgreSQL**默認是不支持中文的。看下面的例子。 ``` rails365_pro=# SELECT '號'::tsquery @@ '2015 - Rails365 Inc. All rights reserved. | 粵ICP備15004902號-2'::tsvector; ?column? ---------- f (1 row) rails365_pro=# SELECT '粵ICP備15004902號'::tsquery @@ '2015 - Rails365 Inc. All rights reserved. | 粵ICP備15004902號-2'::tsvector; ?column? ---------- t (1 row) ``` 說明沒有按照我們的意愿分詞,我們可以自己來看看PostgreSQL是怎么分詞的。只要用**to\_tsvector**這個指令就好了。 ``` rails365_pro=# SELECT to_tsvector('english', '2015 - Rails365 Inc. All rights reserved. | 粵ICP備15004902號-2'); to_tsvector --------------------------------------------------------------------------------- '-2':8 '2015':1 'inc':3 'rails365':2 'reserv':6 'right':5 '粵icp備15004902號':7 (1 row) ``` 明顯不符合我們的意愿。"粵icp備15004902號"應該被更詳細的切分的。至少把"icp","號“等分開。 我們用一個中文切詞的網站來演示一下。網址是[http://www.xunsearch.com/scws/demo/v48.php。](http://www.xunsearch.com/scws/demo/v48.php%E3%80%82) 它切好的詞大概是這樣的。 ``` 2015 - Rails 365 Inc . All rights reserved . | 粵 ICP 備 15004902 號 - 2 ``` 每個詞都是以空格分開的。這樣才是比較符合的。所以我們需要一款中文分詞的PostgreSQL插件。 #### 2. 安裝 [zhparser](https://github.com/amutu/zhparser/)是一款中文分詞的**PostgreSQL**插件。我使用過,效果不錯,故推薦。 **zhparser**只是一個**PostgreSQL**擴展插件,它是基于**SCWS**的(一個簡易中文分詞系統,Simple Chinese Word Segmentation)。 ##### 2.1 第一步,安裝**SCWS** ``` # 下載并解壓 wget -q -O - http://www.xunsearch.com/scws/down/scws-1.2.2.tar.bz2 | tar xvjf - # 編譯安裝 cd scws-1.2.2 ; ./configure ; sudo make install ``` ##### 2.2 第二步,編譯和安裝zhparser ``` # 先安裝PostgreSQL的擴展包 sudo apt-get install postgresql-server-dev-9.3 git clone https://github.com/amutu/zhparser.git cd zhparser SCWS_HOME=/usr/local make && sudo make install ``` ##### 2.3 第三步,進入數據庫安裝擴展 ``` # 進入數據庫 sudo -u postgres psql # 連接數據庫 \c rails365_pro # 安裝擴展 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; ``` #### 3. 使用 接下來我們來測試一下,是不是按照我們的意愿來分詞。 ``` postgres=# SELECT to_tsvector('testzhcfg','2015 - Rails365 Inc. All rights reserved. | 粵ICP備15004902號-2'); to_tsvector ---------------------------------------------------------------------------------------------------------------- '15004902':10 '2':12 '2015':1 '365':3 'all':5 'icp':8 'inc':4 'rails':2 'reserved':7 'rights':6 '號':11 '備':9 (1 row) ``` 果然,切好詞了。 還可以這樣使用。 ``` postgres=# SELECT * FROM ts_parse('zhparser', '2015 - Rails365 Inc. All rights reserved. | 粵ICP備15004902號-2'); tokid | token -------+---------- 101 | 2015 117 | - 101 | Rails 101 | 365 101 | Inc 117 | . 101 | All 101 | rights 101 | reserved 117 | . 117 | | 106 | 粵 101 | ICP 118 | 備 101 | 15004902 110 | 號 117 | - 101 | 2 (18 rows) ``` 既然能夠中文切詞,我們就可以方便地結合其他技術來實現一個帶中文支持的檢索系統的。 完結。 下一篇:[PostgreSQL 的全文檢索系統之 pg\_search 實現 (四)](https://www.rails365.net/articles/postgresql-quan-wen-jian-suo-xi-tong-pg-search-shi-xian-xian-si)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看