xunsearch是什么?
开源免费、高性能、多功能、简单易用的专业全文检索技术方案 点击官网,了解更多
安装与测试
当你看到
Installation completed successfully, Thanks you
就安装成功了!
-
检查本地环境看看是不是满足需求。
快速开发
开发规范
开发流程
- 编写配置文件,创建项目基本配置。在线ini辅助工具
- 引入 PHP-SDK的入口文件 $prefix/sdk/php/lib/XS.php 进行搜索功能和界面开发。
- 调试,部署
目录结构
-
|- data/ 索引数据目录
|- project/
|- db/ 默认的主索引数据库,各种检索数据均存放在此
|- log_db/ 搜索日志数据库,用于存放搜索日志相关,用于实现相关搜索、搜索建议、拼音搜索等
|- search.log
|- etc/
|- dict_user.txt 全局自定义词库
|- sdk/
|- php/
|- app/ 项目的配置文件
|- lib/XS.php 入口文件,所有搜索功能必须且只需包含此文件
|- util/ 辅助工具程序目录
|- RequireCheck.php 用于检测您的 PHP 环境是否符合运行条件
|- Quest.php 搜索测试工具
|- Indexer.php 索引管理工具
中文分词
xunsearch采用基于 scws + Xapian 的开源全文搜索引擎
1. 基本分词
require_once './sdk/php/lib/XS.php';
$obj = new XS('demo');
$tokenizer = new XSTokenizerScws; // 直接创建实例
$text = '北京大学网络教育';
$words = $tokenizer->getResult($text);
echo "<pre>";
print_r($words);
2. 自定义分词
自定义分词文档
自定义分词规则
文件为纯文本文件,编码必须是 UTF-8,可用任何编辑器修改
每行一条记录表示一个词,每行包含 1~4 个字段,字段之间用空格或制表符(\t)分隔
字段含义依次表示 “词语”,“词频(TF)”,“逆词频率(IDF)”,“词性(ATTR)”
后面三个字段如果省略依次使用 scws 的默认值
特殊词性 !
可用于表示删除该词
自定义词典优先于内置词典加载和使用,以 # 开头的行为注释
$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');
搜索
首先要将数据导入到搜索服务器中,并创建索引,才能实现搜索功能。
官方文档
1. 索引
索引在 Xunsearch中泛指用于检索的数据库文件总称。每一次检索数据均为访问和读取 索引文件,每一次更新数据则是对索引文件的修改。
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的服务,首先要开启服务。或者,将服务写到开机的脚本文件中。