xunsearch是什么?
開源免費、高性能、多功能、簡單易用的專業(yè)全文檢索技術方案 點擊官網,了解更多
安裝與測試
當你看到
Installation completed successfully, Thanks you
就安裝成功了!
-
檢查本地環(huán)境看看是不是滿足需求。
本地環(huán)境檢測.png
快速開發(fā)
開發(fā)規(guī)范
開發(fā)流程
- 編寫配置文件,創(chuàng)建項目基本配置。在線ini輔助工具
- 引入 PHP-SDK的入口文件 $prefix/sdk/php/lib/XS.php 進行搜索功能和界面開發(fā)。
- 調試,部署
目錄結構
-
|- data/ 索引數(shù)據(jù)目錄
|- project/
|- db/ 默認的主索引數(shù)據(jù)庫,各種檢索數(shù)據(jù)均存放在此
|- log_db/ 搜索日志數(shù)據(jù)庫,用于存放搜索日志相關,用于實現(xiàn)相關搜索、搜索建議、拼音搜索等
|- search.log
|- etc/
|- dict_user.txt 全局自定義詞庫
|- sdk/
|- php/
|- app/ 項目的配置文件
|- lib/XS.php 入口文件,所有搜索功能必須且只需包含此文件
|- util/ 輔助工具程序目錄
|- RequireCheck.php 用于檢測您的 PHP 環(huán)境是否符合運行條件
|- Quest.php 搜索測試工具
|- Indexer.php 索引管理工具
中文分詞
xunsearch采用基于 scws + Xapian 的開源全文搜索引擎
1. 基本分詞
require_once './sdk/php/lib/XS.php';
$obj = new XS('demo');
$tokenizer = new XSTokenizerScws; // 直接創(chuàng)建實例
$text = '北京大學網絡教育';
$words = $tokenizer->getResult($text);
echo "<pre>";
print_r($words);
2. 自定義分詞
自定義分詞文檔
自定義分詞規(guī)則
文件為純文本文件,編碼必須是 UTF-8,可用任何編輯器修改
每行一條記錄表示一個詞,每行包含 1~4 個字段,字段之間用空格或制表符(\t)分隔
字段含義依次表示 “詞語”,“詞頻(TF)”,“逆詞頻率(IDF)”,“詞性(ATTR)”
后面三個字段如果省略依次使用 scws 的默認值
特殊詞性 !
可用于表示刪除該詞
自定義詞典優(yōu)先于內置詞典加載和使用,以 # 開頭的行為注釋
$path = "./etc/dict_user.txt";
//加載自定義分詞 自定義+默認
$tokenizer->addDict($path);
//只使用自定義分詞
// $tokenizer->setDict($path);
$new = $tokenizer->getResult($text);
echo "<hr>";
print_r($new);
3. 提取重要詞匯
$tops = $tokenizer->getTops($text, 10, 'n,v,vn');
搜索
首先要將數(shù)據(jù)導入到搜索服務器中,并創(chuàng)建索引,才能實現(xiàn)搜索功能。
官方文檔
1. 索引
索引在 Xunsearch中泛指用于檢索的數(shù)據(jù)庫文件總稱。每一次檢索數(shù)據(jù)均為訪問和讀取 索引文件,每一次更新數(shù)據(jù)則是對索引文件的修改。
2. 基本搜索
require_once './sdk/php/lib/XS.php';
$demoObj = new XS('demo');
$searchObj = $demoObj->getSearch();
$keyword = $_GET['keyword'];
$page = $_GET['page'];
if($page <= 1){
$page = 1;
}
$pageSize = 10;
$offset = ($page - 1) * $pageSize;
$searchObj->setLimit($pageSize,$offset)->search($keyword);
3. 同義詞搜索
$indexObj = $demoObj->getIndex();
//添加同義詞
$indexObj->addSynonym("北京大學","北大");
$indexObj->flushLogging();
Tips
每次使用xunsearch的服務,首先要開啟服務?;蛘?,將服務寫到開機的腳本文件中。
