开发工具:
文件大小: 696kb
下载次数: 0
上传时间: 2019-03-02
详细说明:Xunsearch 采用结构化分层设计,包含后端服务器和前端开发包两大部分。后端是用 C/C++ 基于 Xapian (读 /zap-ian/) 搜 索库、SCWS 中文分词、libevent 等开源库开发,借鉴了 nginx 的多进程多线程混合工作方式,是一个可承载高并发的高 性能服务端。unisearch
安装
服务端
前端的 insearch PHP-SDK与服务端通讯协同工作,要想使用 insearch抟索就必须先安装服务端,目前只支持∪NⅨ类
型的操作系统含 LinUX/BSD/ MaCOs在内以源码方式编译安装,暂不支持 Windows。因此也要求您的服务器上你必须装
有gco丶make等软件包编译安装工具。
1.下载&解压安装包:http://www.xunsearch.com/download/xunsearch-full-latest.tar.bz2
2.强烈推荐用 SHOME/xunsearch或/sr/ ccal/xunsearch作为安装目录以下简称$prex)。无论您是首次安装
insearch还是升级新版本,均只要直接执行我们提供的安装脚本,输入安装目录然后耐心等待即可
cd xunsearch-full-1.3.3 sh setup. sh
3.安装完毕后,您就可以通过自带的脚本( Prefix/ bin/xs-ct.st启动/关闭 unisearch服务端了。用法举例
Prefix/bin/xs-ctl sh start
默认启动,绑定本地的8383/8384端口
prefix/bin/xs-ct1.sh- o inet start#绑定全部工P,适合SDK/服务端不同服务器的情况
Prefix/bin/xs-ctlsh stap
#停止服务器,若启动时指定了- b inet此处也必须指定
4.没错,安装就是这么简单。特别提示,搜索的所有索引数据将被保存到 Prefix/data目录,因此如果您希望数据目录
另行安排,请采用软连接形武确保$ prefix/lata链至真实数据目录。此外,如果服务端启动时使用了-biet参数,那
么请借助 iptables或其它防火墙工具进行保护, insearch本身出于性能考虑不做其它验证处理。
PHP-SDK
PHP-SDK的代码默认包含在服务端安装目录中,即$ prefix/sd/ohp。目录结杓如下
-HML格式的文档、AP手册
搜索项目ii文件的默认存储目录
lib/XS. php
搜索库唯一文件,所有搜索相关功能均必须引入此文件
\--util/
辅助工具目录
Require Check. php
-检测您的PHP环境是否符合 insearch运行条件
--搜索测试工具
\- Indexer php
-索引管理工具
1.如果您的搜索应用和服务端在同一机器,则无需其它操作,只需在开发时直接引入$ prefix/ sdk/php/ b/Xs. php即可。
2.如您的搜索应用和服务端不在司一机器,则请复制$ prefix./sdk/ho目录到相应的搜索应用服务器,同时出于安全考
虑,建议不要放到WEB可访问的目录。
3.使用SDK中的u工具要求您的phoc)位于可执行文件默认搜索路径中(即用 which php可以检测到),如不在请做
好软链接至/sr/ local/ bin/ohp
xunsearch. com
unisearch
检测运行环境
Xunsearch要求PHP是52.0及以上版本,强烈推荐使用53×系列的PHP。请在安装完毕后直接执行
Prefix/ sdk/php/util/ Require Check. php看输出即可。如果您的终端编码不是∪TF-8请在调用时加上-cgk参数。
DEMo服务器
某些情况下,部分用户未能自己部署安装服务端,而又想体验 xunsearc。因此,我们从发布133版本起,提供了一台供
用户测试的DEMO服务器。用户无需安装服务端,直接下载 PHP-SDK就可以开发测试。特别提示,DEMO服务器只用于
测试目的,并会不定期重置数据。
单独下载 PHP-SDK
如果您没有安裝服务端,想直接体验DEMO服务器的,您只要从下面地址下载解压SDK压缩包即可。
http://www.xunsearch.com/download/xunsearch-sak-latest.zip
解压后得到 xunsearch-sok目录,相应的搜索库文件为 xunsearch-sak/phpb/s.php
服务器地址
索引服务器: demo, xunsearch co端口9393
搜索服务器:demo.xunsearch.com端口9394
xunsearch. com
unisearch
开始
开发流程
为便于讲解说明,假定 PHP-SDK代码目录为$sdk。
分析搜索需求,设计搜索应用必需的字段。
编写项目配置文件,项目配置in文作存放在 Ssdk/app目录
引入$sdκ/b/×sphp进行搜索功能和界面开发,借助$sdkt/php工具进行测试或调试。
认识对象
·XS--搜索项目总对象:所有相关操作均基于此对象及子方法。
XSDocument-搜索结果或索引文档,包括一组字段及值,相当于SQL表中的一条记录。
XSIndex--索引管理,通过XS对象的ndex属性取得。
● XSSearch--搜索功能,通过XS对象的 search属性取得。
XSEXception-异常类型,必须捕捉比异常以判断操作是否正确,例:
require$sdk/ib/Xs.php';∥引入 insearch sdk
tr
Sxs= new Xs(dero);∥deno为项目名称,配置文件是:Ssdk/ap/ero,in
∥/…此外为其它 XSIndex/XSsearch的相关功能代码
3 catch (XSEXception Se)
cho$e."n".$e- get TraceS String0.“r';∥发生异常,输岀描述
编写配置文件
推荐使用我们的在线工具编写:htto://www.xunsearch.com/tools/iniconfigdemo项目的配置如下
项目设置
ini内容
项目名称:demo
默认字符集:「ut-8
project. ame demo
服务器连接参数?
(>)
project.default charset= Ltf-8
sccr index-
索引:dem6xunsearch.com9393搜索:demainsearch.cor9394
demo.xunsearch com: 939
server search
dermo. xurisedrth cun 9394
项目字段设计
Pidl
( copy
type=旧a
字段名称
端型
分词器栽取长度权重精确搜索
[subject
pd(主键里国{罕东引一曰
default
0
否同]删除
typc- title
字段混合(e05是图影
Imessacel
subject
标題型
messag
〔内容里混合区索引曰
default
301是曰删除
crane
type= numeric
chrono
数字曰不东引一(h1(
xunsearch. com
unisearch
创建索引
获取 XSIndex对象
require Ssdk/lib/XS. ph
$X= new Xs(demo);∥创建Xs对象,项目名称为:demo
$ Index=$xs-> > index;∥获取索引对象
/…在此编写过索引处理代码
3 catch KXSException e)1
增删改
sdc= new XsDocumenti(aray(∥创建 XSDocument
pd"=>123,∥主键字段,必须指定
subject=>测试文档标题, message'=>测试文档内容
chrono’=>time
Index->add($doc);∥添加文档,不检测便索引库内是否已有冋一主键数据
Index-> update(sdoC);∥更新文档,若有同主键数据則替换之
Sindex->del(123");∥删除主键值为234的文档
Index-> delarrayt‘123,456);∥删除主键值为123及456的文档
清空索引
当搜索字段文件变更或出现严重不同步时,建议清空索引。
Index-> clean0;∥/一执行立即生效
索引同步
出于性能优化没计,上面所看到的索引操作都是异步操作。也就是说您通过PHP调用的AP返回后,索引变动是先保存
在服务端的队列中,由服务端根据负尙延迟一并写入索引库。这个时间差我们控制在合理范围内,通常是几秒钟时间。但
如果您在批量更新后希望立即同步,可以这样
Sindex->flushIndex0:;
xunsearch. com
unisearch
使用搜索
获取 XSSearch对象
requireSsdk/lib/XS. ph
tr
$X= new Xs(demo);∥创建Xs对象,项目名称为:demo
Index=$xs-> search;∥获取搜索对象
∥/…在此编写过搜索处理代码
3 catch KXSException e)1
搜索语法
查询语句和流行的搜索引擎相似,通过空格把搜索词、句连接起来即可,字段检索使用feld:∝X的格式。
允许使用 ANDOR/NOT/XOR等显式地布尔关系组合,可以使用小括号0包围表达优先级。
支持使用双引号对较长搜索词进行精确匹配,要求字段设计时勾选“精确”项。
Ssearch-> search(杭州西湖)∥搜索同时包含这2个词的结果
search-> search(杭州OR西湖);∥搜索包含其中一个词的结果
search-> search( subject杭州西湖);∥包括西湖并且标题包含杭州的结果
获取结果
●设置数量及偏移
Ssearch-> delimit(5,15);∥/设置最多返回5条,并跳过前15条,即返回第16-20条结果
●获取搜索结果
Sdocs=$ search-> setQuery测试)-> search;∥搜索‘测试
foreach(Sdocs as Sdoc)(
$ subject=$ Ssearch-> highlight($oo->hjec;∥/高亮处理标题
echo$doc->rank0..‘. Ssubject.‘[".Sdoc-> percent0.%-‘. date(Y-m-d").“n
echo Sdoc->message. "n\n
·获取搜索结果数量(估算值
Scount= Ssearch-> get astCount0;∥获取最后一次$ search-> search0的匹配数量
count=$ search-> count(测试);∥直接检索包含测试的数量
xunsearch. com
unisearch
搜索日志
关于日志
系统内部会自动记录并分析搜索关键词日志,通过日志衍生出相关的扩展功能。日志同样是异步更新的并且延迟较大,如
需要强制刷新请调用以下指令或索引APl。
php Ssdk/utl/ indexer:php- p demo- flush-og#通过辅助工具刷新日志
Index> flushlogging0;∥通过索引AP更新
热门搜索
通过 XSSearch;: getHotQuery方法获取热门搜索词,返回的数组以关键词为键名,抟索指数为值s
Swords=$ search> getHotQuery0;∥/取前6个总热门搜索词
Swords= Ssearch-> getHotQuery6, aston;∥获取前10个上周热门词
相关搜索
通过 XSSearch;: getRelatedQuery方法获取热门搜索词,返回相关搜索词组成的数组。
Sword=$ search> getRelatedQuery0;∥获取前6个和最近一次 setQuery0相关的搜索词
words=$ search-> getRelatedQuery测试’,10);∥获取10个和测试’相关的搜索词
搜索纠错
由于输入过快或拼音输入中文很容易出现错误, XSSearch: getCorrectedQuery方法返回纠正后的关键词组成的数组。
doCs=$ search-> setQuery(侧试)-> search0;∥/正常进行搜索误打的侧试
Corrected= Ssearch> getCorrectedQuery0;∥尝试修正
f( count( corrected>O){有修正词则列出
echo“您是不是要找:Ⅵn”;
foreach(Scorredted as Sword)echo word. "n
搜索建议
类似常见搜索引擎那样,当用户在输入框键入少量字、拼音、声母时进行智能补全,可以节省用户的输入时间。
So0=800ag0y0aray测试)
Word=$arcn> getExpandedQuery测):∥返回aray(测试)
$ words=$ search-> get ExpandedQuery(cs");∥/返回aray(测试)
xunsearch. com
unisearch
使用工具
为了便于用户开发调试,我们在Ssk目录提供了一套辅助工具。输出结果默认为UIF8编码,如果发生乱码请测试在
所有命令后加上-Cgbk以修正编码。
util. Indexer
支持批量导入索引、清空索引、刷新提交、同义词管理等,详细请参见 php util/ Indexer. php-help
php util/ ndexer. php demo- clean#清空demo项目的索引数据
php util/Indexer. php demo-ush#刷新未写入的索引队列
#导入M⑤QL的 dbname. tbl post表到oemo项目并采用平滑重建方式
php util/ Indexer php demo --rebuild--source="mysql: //root: passlocalhost/dhname--Sq="SELECT* FROM tbl_post
util. Quest
功能齐仝的综合搜索测试工具,详细请参见 ohp util/Quest;php-helo
php util/ Quest. php demo测试-imnt3#搜索dero项目中包含“测试"的数据,并最多只返回3条
php util/Quest. php- suggest demo Cs#列出以"cs”开头的搜索建议
php util/ Quest. php- correct demo侧试#列出“侧试”的修正词
util. Logger
搜索日志管理,支持删狳、修改、刷新、清空等功能,详细请参见 php util/ agger.php-hel
php util/ Logger: php dermo-fush#刷新deo项目搜索日志
php util/ Logger. php demo#查看cemo项目的热门搜索词
php util/ Logger. php demo测试#查看demo项目和“测试”相关的搜索词
php util./ Logger. php dermo- clean#清空dero项目搜索日志
php uti/oger; php demo-del-"word1,woro2”#删除搜索日志中的word和word
php util/ Logger. php demo-put=Word#添加wor到demo项目搜索目志中
util, Searchskel
该工具读取并分析项日配置文件( NAME, ini,然后生成一个通用适合WEB访问的搜索代码骨架。您可以在此基础上补充和
修改代码即可,能大幅提升开发效率。详细请参见 php util/ SearchSkel. php-hep。
php uti/ Search Skel. php demo/ ath/to/web #生成cem项目的搜索骨架,生成结果在 oath/to/web/demo
搜索骨架代码
earch. phi
搜索入口页面,可放入Weo直接访问用于测试
H--search. tpl
搜索结果输出模板文件
\--suggest php
提取搜索建议,通过 jQuery AutoComplete插件调用
xunsearch. com
unisearch
使用S○S
swS分词已经被内置包含到Ⅺ insearch服务端,因此用户也可以直接通过SDK代码使用scws分词功能,中文分词是计
算机中文语言处理的重要环节。
分词设置
在SDK中必须选创建XS对象再创建 XS Tokenizer scws对象,在此基础上使用scWs分词。
ss= new Xs'demo");∥创建初始XS项目,否则无法定位服务端会抛出异常
Tokenizer= new Xs Tokenizer Scws;∥创建分词对象实例
Tokenizer> setlgnore(true);∥让返回的分词结果忽略标点符号
Tokenizer> setDualityt(rue);∥对分词结果中的连续单字做二元组合
Tokenizer-> setMulti(3):∥设置复合分词方案:0×01-长词切为短词,0x02单字二元,0x04-重要单字,0x08-全部单字
获取分词结果
返回的结果数组每个元素包含:该词在文本中的位置(of),词性att,词内容Moro)o
stxt=“迅搜( insearch是优秀的开源仝文检索解决方案";
$ words=$ okenizer-> getResult($text;返回分词结果
print _r( Swords);∥打印分词结果
提取重要词
根据指定的词性,从给定文本中根据词语的重要性、出现塞提取重要词列表,返回词中的tmes表示出现次数。
text=“进搜( unisearch是优秀的开源全文检索解决方案”;
Stops= Tokenizer-> getTops($text,5,n,vwn;∥提取前5个重要词,要求词性必须是n或v或v
print_r( Stops);∥/打印重要词列表
xunsearch. com
(系统自动生成,下载前可以参看下载内容)
下载文件列表
相关说明
- 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
- 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度。
- 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
- 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
- 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
- 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.