迅搜中文分词简明教程

来源:互联网 发布:淘宝口令变成链接 编辑:程序博客网 时间:2024/06/02 02:32

简介


安装和命令行操作可以参考手册

索引
none 不做索引,所有的搜索匹配均与本字段无关,这个字段只用于排序或搜索结果展示用到。
self 字段索引,可以在搜索时用 field:XXX 来检索本字段
mixed 混合区索引,不标明字段的默认搜索也可以检索本字段
both 相当于 self + mixed,两种情况均索引

字段类型
string 字符型,适用多数情况,也是默认值
numeric 数值型,包含整型和浮点数,仅当字段需用于以排序或区间检索时才设为该类型,否则请使用 string 即可
date 日期型,形式为 YYYYmmdd 这样固定的 8 字节,如果没有区间检索或排序需求不建议使用
id 主键型,确保每条数据具备唯一值,是索引更新和删除的凭据,每个搜索项目必须有且仅有一个 id 字段,该字段的值不区分大小写
title 标题型,标题或名称字段,至多有一个该类型的字段
body 内容型,主内容字段, 即本搜索项目中内容最长的字段,至多只有一个该类型字段,本字段不支持字段检索


配置文件简介
project.name = keys 指定项目名称,最好跟ini配置文件同名project.default_charset = UTF-8 指定项目默认字符集[kid]type = id 指定id字段,每个项目只能有一个id字段,id字段的值不能重复[value]type = string 指定一个string字段,string也是默认字段类型index = both 设置索引为both;不设置索引的字段,不会被检索[pinyin]type = stringindex = both[type]type = numeric 指定一个数字字段



编写配置文件时要特别注意:需要索引的字段一定要指定索引类型,因为字段默认是无索引(none)

使用PHP api调用迅搜

构造一个迅搜对象
$xs=new XS('keys’);
所有操作都要基于一个迅搜对象,创建对象需要指定具体的项目名称

获取一个索引对象
$index=$xs->getIndex();
索引对象可以添加,更新数据

获取一个查询对象
$search=$xs->search;
查询对象内置所有查询相关方法

构造一个文档对象
迅搜所有的操作都要基于文档,文档概念贯穿整个迅搜软件
$doc = new XSDocument();
索引对象增、改操作需要传一个文档对象,而查询方法会返回一个文档对象


例:
插入数据
try{     $_indexNumber=time().rand(1, 100);     $data=array(          'kid'=>$_indexNumber,          'value’=>'测试数据',          'pinyin’=>'ceshi',          'type’=>1,     );     //插入分词词库     $index=$xs->getIndex();//索引对象     $doc = new XSDocument(); //创建文档对象     $doc->setFields($data);     if($index->add($doc)) //将文档添加到索引     {         printLine('保存成功');     }else {         printLine('ERR');     }}catch(XSException $e){     echo $e->getMessage();}catch(Exception $e){     echo $e->getMessage();}


例:
查询数据
$keywords=trim($_POST['keywords']);try{     $xs=new XS('keys');     //获取搜索对象     $search=$xs->search;     //生成key数组,单条生成     $keywords=empty($keywords)?'':$keywords;     $keywords=explode(',', $keywords);     //设置多条语句     if(!is_array($keywords)){          $search->setQuery($keywords);     }else if(is_array($keywords)){          foreach($keywords as $val){               $search->setQuery($val);          }     }     $docs_c=$search->count();     //执行     $docs=$search->search();}catch(XSException $e){     echo $e->getMessage().'<br />';}catch(Exception $e){     echo $e->getMessage().'<br />';}





0 0