xunsearch基本使用
基本实践
<?php
// 引入
require_once './sdk/xs/lib/XS.php';
// 创建对象
$xs = new XS('demo');
// 查询
$docs = $xs->search->search('测试');
// 输出
print_r($docs);
异常捕获
try
{
$xs = new XS('demo');
$docs = $xs->search->setQuery('测试')->setLimit(5)->search();
foreach ($docs as $doc)
{
echo $doc->rank() . ". " . $doc->subject . " [" . $doc->percent() . "%]\n";
echo $doc->message . "\n";
}
}
catch (XSException $e)
{
echo $e; // 直接输出异常描述
if (defined('DEBUG')) // 如果是 DEBUG 模式,则输出堆栈情况
echo "\n" . $e->getTraceAsString() . "\n";
}
XSDocument 文档
docid() 取得搜索结果文档的 docid 值 (实际数据库内的 id,一般用不到)
rank() 取得搜索结果文档的序号值 (第X条结果)
percent() 取得搜索结果文档的匹配百分比 (结果匹配度, 1~100)
weight() 取得搜索结果文档的权重值 (浮点数)
ccount() 取得搜索结果折叠的数量 (按字段折叠搜索时才有效)
添加操作
<?php
// 引入
require_once './sdk/xs/lib/XS.php';
try
{
$xs = new XS('demo');
$doc = new XSDocument();
$doc->pid = 4;
$doc->subject = "Hello,XS";
$doc->message = "Hello,XS内容";
$xs->index->add($doc);
}
catch (XSException $e)
{
echo $e; // 直接输出异常描述
if (defined('DEBUG')) // 如果是 DEBUG 模式,则输出堆栈情况
echo "\n" . $e->getTraceAsString() . "\n";
}
<?php
// 引入
require_once './sdk/xs/lib/XS.php';
try
{
$xs = new XS('demo');
$doc = new XSDocument();
$doc['pid'] = 5;
$doc['subject'] = "Hello,XS";
$doc['message'] = "Hello,XS内容";
$xs->index->add($doc);
}
catch (XSException $e)
{
echo $e; // 直接输出异常描述
if (defined('DEBUG')) // 如果是 DEBUG 模式,则输出堆栈情况
echo "\n" . $e->getTraceAsString() . "\n";
}
<?php
// 引入
require_once './sdk/xs/lib/XS.php';
try
{
$xs = new XS('demo');
$doc = new XSDocument();
$doc ->setFields([
'pid' => 6,
'subject' => "Hello,XS",
'message' => "Hello,XS内容"
]);
$xs->index->add($doc);
}
catch (XSException $e)
{
echo $e; // 直接输出异常描述
if (defined('DEBUG')) // 如果是 DEBUG 模式,则输出堆栈情况
echo "\n" . $e->getTraceAsString() . "\n";
}
建立索引的过程会有点延迟!
$index->add($doc)->flushIndex()
可以临时处理成同步的。
ini
string 字符型,适用多数情况,也是默认值
numeric 数值型,包含整型和浮点数,仅当字段需用于以排序或区间检索时才设为该类型,否则请使用 string 即可
date 日期型,形式为 YYYYmmdd 这样固定的 8 字节,如果没有区间检索或排序需求不建议使用
id 主键型,确保每条数据具备唯一值,是索引更新和删除的凭据,每个搜索项目必须有且仅有一个 id 字段,该字段的值不区分大小写
title 标题型,标题或名称字段,至多有一个该类型的字段
body 内容型,主内容字段, 即本搜索项目中内容最长的字段,至多只有一个该类型字段,本字段不支持字段检索
type = string
project.name = sample
project.default_charset = GBK
;server.index = 8383
;server.search = 8384
[pid]
type = id
[subject]
type = title
[message]
type = body
[dateline]
type = numeric
[author]
index = both
[authorid]
[tid]
index = self
tokenizer = full
[fid]
index = self
tokenizer = full
[flag]
更新、修改文档
如果索引数据库中已存在主键值相同的文档,那么相当于先删除原有的文档,再用当前文档替换它。 如果未存在主键值相同的文档,则效果和添加文档完全一致。
<?php
// 引入
require_once './sdk/xs/lib/XS.php';
$xs = new XS('my');
$data = array(
'pid' => 2, // 此字段为主键,是进行文档替换的唯一标识
'subject' => '测试文档的标题',
'message' => '测试文档的内容部分',
'chrono' => time()
);
// 创建文档对象
$doc = new XSDocument;
$doc->setFields($data);
// 更新到索引数据库中
$xs->index->update($doc)->flushIndex();
删除文档
1.按主键删除
<?php
// 引入
require_once './sdk/xs/lib/XS.php';
// 创建xs
$xs = new XS('my');
// 创建index
$index = $xs->index;
// 删除
$index->del('1')->flushIndex();
// 删除
$index->del(['4','5'])->flushIndex();
2.按内容删除
<?php
// 引入
require_once './sdk/xs/lib/XS.php';
$xs = new XS('my');
// 创建xs
$xs = new XS('my');
// 创建index
$index = $xs->index;
// 删除
$index->del('测试','subject')->flushIndex();
此外删除操作和添加文档一样,也是一个异步行为。
清空索引
// 创建xs
$xs = new XS('my');
// 创建index
$index = $xs->index;
// 删除
$index->clean();
平滑重建索引
<?php
// 引入
require_once './sdk/xs/lib/XS.php';
// 创建xs
$xs = new XS('my');
// 创建index
$index = $xs->index;
// 宣布开始重建索引
$index->beginRebuild();
// 然后在此开始添加数据
$data = array(
'pid' => 2, // 此字段为主键,是进行文档替换的唯一标识
'subject' => '测试文档的标题',
'message' => '测试文档的内容部分',
'chrono' => time()
);
// 创建文档对象
$doc = new XSDocument;
$doc->setFields($data);
$index->add($doc);
// 告诉服务器重建完比
$index->endRebuild();
使用索引缓冲区
一次性提交服务操作
<?php
// 引入
require_once './sdk/xs/lib/XS.php';
// 创建xs
$xs = new XS('my');
// 创建index
$index = $xs->index;
// 开启缓冲区,默认 4MB,如 $index->openBuffer(8) 则表示 8MB
$index->openBuffer();
// 然后在此开始添加数据
$data = array(
'pid' => 2, // 此字段为主键,是进行文档替换的唯一标识
'subject' => '测试文档的标题',
'message' => '测试文档的内容部分',
'chrono' => time()
);
// 创建文档对象
$doc = new XSDocument;
$doc->setFields($data);
// 在此进行批量的文档添加、修改、删除操作
$index->add($doc);
$index->add($doc);
$index->add($doc);
$index->add($doc);
$index->add($doc);
$index->add($doc);
$index->closeBuffer(); // 关闭缓冲区,必须和 openBuffer 成对使用
自定义 SCWS 词库
1.全局自定义词库
$prefix/etc/dict_user.txt
# Custom dictionary for scws (UTF-8 encoding)
# 每行一条记录,以 # 开头的号表示注释忽略
# 每行最多包含 4 个字段,依次代表 "词条" "TF" "IDF" "词性"
# 字段之间用空格或制表符分开,特殊词性 "!" 用于表示删除该词
# 参见 scws 自定义词典帮助:
# http://bbs.xunsearch.com/showthread.php?tid=1303
# $Id$
#
# WORD TF IDF ATTR
# ------------------------------------------------------
2.项目自定义词库(这个貌似更好的读取)
$prefix/data/项目名称/dict_user.txt
xunsearch基本使用的更多相关文章
- Xunsearch 中文全文搜索
原文地址:http://www.yiichina.com/code/661 官网地址:http://www.xunsearch.com/ 1.安装 wget http://www.xunsearch. ...
- Xunsearch迅搜(基于 xapian+scws 的开源中文搜索引擎)安装与简单使用
今天鼓捣了xunsearch,感觉官方指南写得挺详细,于是按照指南一步一步走,但是感觉越看越凌乱,像看API一样,新手看得特费劲,网上也少有新手教程,于是略过今天的歪路,记录一下我的安装步骤. Xun ...
- XunSearch(讯搜)的使用教程步骤
一.安装编译工具 yum install make gcc g++ gcc-c++ libtool autoconf automake imake mysql-devel libxml2-devel ...
- xunsearch增量索引改进版
最近测试了xunserach全文索引程序.xunsearch只有LINUX版,所以想用windows服务器请使用其它全文索引程序.xunsearch本身不像coreseek那样自带增量索引的功能,所以 ...
- xunsearch安装配置
1.wget http://www.xunsearch.com/download/xunsearch-full-latest.tar.bz2 2.tar -xjf xunsearch-full-lat ...
- xunsearch迅搜体验
安装与启动 http://www.xunsearch.com/doc/php/guide/start.installation 编写配置文件 http://www.xunsearch.com/doc/ ...
- linux安装xunsearch
首先要确保ubuntu安装了gcc g++ make sudo apt-get install make gcc g++ 然后安装zlib,用来解压的: apt-get install zlib1g- ...
- 搜索服务器xunsearch实现
安装方法: centos 6.6 64位 histroy: 12 cd /srv/ 13 wget http://www.xunsearch.com/download/xunsea ...
- xunsearch安装与卸载
刚接触xunsearch(迅搜)的时候,我是排斥的.排斥的原因不是因为害怕学习新技术(其实我是对心技术很感兴趣),而是因为:一方面xunsearch是国人开发的,对于国人写的开源产品,我不是太感兴趣( ...
- Ubuntu16.04下安装xunsearch+opencc实现php客户端的中文分词
1.准备服务器环境 apt-get install apache2 php mysql-server apt-get install mysql-client phpmyadmin apt-get i ...
随机推荐
- JSP静态包含和动态包含的区别和联系
JSP页面的静态包含和动态包含 JSP中有两种包含:静态包含:<%@include file="被包含页面"%>和动态包含: <jsp:include page= ...
- Java实现数组去除重复数据的方法详解
一.用List集合实现 int[] str = {5, 6, 6, 6, 8, 8, 7,4}; List<Integer> list = new ArrayList<Integer ...
- CC国内厂商现状
(1)阿里云的产品 CC攻击 攻击者攻击服务器的认证页面.登录页面.游戏论坛等.还是用饭馆的例子,CC攻击相当于,坏人霸占收银台结账.霸占服务员点菜,导致正常的客人无法享受到服务. 游戏盾如何防御CC ...
- sql语言分类与整理:DQL\DML\DDL
整体分为三类: 数据库查询语言(DQL,data QUERY LANGUAGE):对表的查询语句,select 数据库定义语言(DDL,data defined LANGUAGE):create da ...
- 016对象——__set __get get_class_methods get_class_vars
<?php /** */ //http://phpbasic.com/004object/16.php?type=admin /*session_start(); $_SESSION['utyp ...
- 大马猴队-Alpha阶段项目复审
队名 优点 缺点 名次 菜鸡互坑队 经典游戏,情怀加分. 刷新的苹果会在蛇身上出现 14 菜鸡互啄 利用python语言实现git版本管理,典型用户清晰. 没有很好地分析用户痛点,没有测试计划 4 ...
- Vue: webpack js basic structure
vue webpack所用基础包: nom install vue vue-loader webpack webpack-cli webpack-dev-server vue-template-com ...
- Android 蓝牙 socket通信
Android中蓝牙模块的使用 使用蓝牙API,Android应用程序能够执行以下功能: 扫描其他蓝牙设备查询本地已经配对的蓝牙适配器建立RFCOMM通道通过服务发现来连接其他设备在设备间传输数据管理 ...
- git 生成公钥与私钥
一. 第1步:创建SSH Key.在windows下查看[c盘->用户->自己的用户名->.ssh]下是否有id_rsa.id_rsa.pub文件,如果没有需要手动生成.打开git ...
- Chrome 的书签太多如何分类整理比较好
对于Chrome书签太多,如何进行分类整理,下面给出几种方法~ 工具/原料 电脑 Chrome浏览器 delicious.Diigo等 方法/步骤1 1.把书签中常用网站只保存LOGO,放在书签栏最前 ...