Ubuntu16.04下安裝xunsearch+opencc實現php客戶端的中文分詞

1.準備服務器環境php

apt-get install apache2 php mysql-server
apt-get install mysql-client phpmyadmin
apt-get install libapache2-mod-php

2.下載安裝xunsearchhtml

Xunsearch 極大程度下降的搜索開發的難度,除了常規的中文分詞、字段檢索、布爾語法等功能外, 還比其它免費的解決方案提供了用戶急需的相關搜索、拼音搜索、結果高亮、搜索建議等等。mysql

wget http://www.xunsearch.com/download/xunsearch-full-latest.tar.bz2
tar -xjf xunsearch-full-latest.tar.bz2
cd xunsearch-full-1.4.10
sh setup.sh

第一次安裝的話,過程可能會稍顯漫長,請沒必要着急,您大可泡杯茶一邊喝一邊等待便可。git

3.待命令運行結束後,若是沒有出錯中斷,則表示順利安裝完成,而後就能夠啓動/從新啓動 xunsearch 的後臺服務github

cd /usr/local/xunsearch
bin/xs-ctl.sh start

4.檢查php-sdk的運行條件,運行測試命令sql

cd sdk/php
util/RequiredCheck.php

5.下載安裝繁簡轉換工具openccapache

OpenCC有獨立的「一簡對多繁」表、「一繁對多簡」表和異體字表,保證沒有混雜着異體字。並且能夠方便地自定義地區習慣使用的異體字,兼容臺灣、香港和海外地區不一樣的習慣。json

apt-get install git
git clone https://github.com/BYVoid/OpenCC
apt-get install cmake doxygen
cd opencc-1.0.4
make
make install

6.安裝opencc的php擴展api

git clone https://github.com/NauxLiu/opencc4php
cd opencc4php
apt-get install php-dev
phpize
./configure
make test
make install

7.配置php擴展,使擴展能被apache和terminal識別服務器

vi /etc/php/7.0/apache2/conf.d/opencc.ini
extension=opencc.so
cp /etc/php/7.0/apache2/conf.d/opencc.ini /etc/php/7.0/cli/conf.d/
service apache2 restart
/etc/init.d/php7.0-fpm restart

8.在sdk/php/lib中新建XST2SFilter.php

<?php
class XST2SFilter implements XSDataFilter{
    public function process($data,$cs=false){
        $od=opencc_open('t2s.json');
        foreach($data as &$item){
            $item=opencc_convert($item,$od);
        }
        opencc_close($od);
        print_r($data);
        return $data;
    }
}

9.首先創建索引庫表,而後使用索引管理器創建索引,並測試

vi app/demo.ini
project.name=demo
project.default_charset=utf-8
server.index=8383
server.search=8384
[pid]
type=id
[subject]
type=title
[message]
type=body
[chrono]
type=numeric
util/Indexer.php --source=csv --clean demo --filter=lib/XST2SFilter
1,關於 xunsearch 的 DEMO 項目測試,項目測試是一個頗有意思的行爲!,1314336158
2,測試第二篇,這裏是第二篇文章的內容,1314336160
3,項目測試第三篇,俗話說,無三不成禮,因此就有了第三篇,1314336168
util/Quest.php demo 測試

10.在/var/www/html中新建test.php

<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=gbk" />
<title>xunsearch中文全文搜索在php程序中的應用</title>
</head>
<body>
<h3><font color="blue">xunsearch全文搜索在php程序中應用</font></h3>
<form action="test2.php" method="post">
輸入搜索的關鍵詞:<input type="text" name="keyword" size="30" value="<?php echo $_POST['keyword'];?>" />
<input type="submit" name="sub" value="搜索" />
</form>
<hr />
<?php
echo "<pre />";
#引入接口文件,其實你懂的,就是一個類
require '/usr/local/xunsearch/sdk/php/lib/XS.php';   //  引入 xunsearch sdk
if(isset($_POST['sub']) && $_POST['keyword'] != ''){
    $keyword = trim($_POST['keyword']);    //接收關鍵詞
    $xs = new XS('demo');    // demo  爲項目名稱,配置文件是:$sdk/app/demo.in i
    //$index = $xs->index;   //  獲取索引對象
    $search = $xs->search;   //  獲取搜索對象
    $search->setLimit(20); 
    $docs = $search->setQuery($keyword)->search();  //  搜索 ‘ 測試’
    
    echo "<table border='1' bordercolor='green' cellspacing='0'><tr><th>標題</th></tr>";
        foreach ($docs as $doc) {
            $subject = $search->highlight($doc->subject); //  高亮處理標題
            echo "<tr><td>".$subject."</td></tr>";
        }
    echo "</table>";  

// $search->setQuery($keyword);
// // 獲取前 6 個和默認搜索語句 "西湖" 相關搜索詞
// $words = $search->getRelatedQuery();
       // print_r($words);    
}
?>

php-sdk的幫助文檔:http://www.xunsearch.com/doc/php/guide/php-sdk的API文檔:http://www.xunsearch.com/doc/php/api/index

相關文章
相關標籤/搜索