您的位置:首页 > 其它

XSSearch学习笔记

2016-06-27 20:33 323 查看


XSSearch

All Packages | 属性 | 方法(函数)
XS
继承关系class XSSearch » XSServer » XSComponent
版本1.0.0
源代码sdk/php/lib/XSSearch.class.php
XS 搜索类, 执行搜索功能 有部分方法支持串接操作
$xs->search->setQuery($str)->setLimit(10, 10)->search();
$xs->close();



Public 属性

隐去继承来的属性
名称类型描述定义于
allSynonymsarray获取当前库内的全部同义词列表XSSearch
connStringstring连接字符串XSServer
correctedQueryarray获取修正后的搜索词列表XSSearch
dbTotalint获取搜索数据库内的数据总量XSSearch
facetsarray读取最近一次分面搜索记数XSSearch
hotQueryarray获取热门搜索词列表XSSearch
lastCountint获取最近那次搜索的匹配总数估值XSSearch
projectstring获取当前项目名称XSServer
querystring获取解析后的搜索语句XSSearch
relatedQueryarray获取相关搜索词列表XSSearch
respondXSCommand从服务器读取响应指令XSServer
socketmixed获取连接资源描述符XSServer
xsXS服务端关联的 XS 对象XSServer


Protected 属性

隐去继承来的属性
名称类型描述定义于
_connXSServer
_flagXSServer
_projectXSServer
_sendBufferXSServer
_sockXSServer


Public 方法

隐去继承来的方法
名称描述定义于
__construct()构造函数, 打开连接XSServer
__destruct()析构函数, 关闭连接XSServer
__get()魔术方法 __getXSComponent
__isset()魔术方法 __issetXSComponent
__set()魔术方法 __setXSComponent
__unset()魔术方法 __unsetXSComponent
addDb()添加搜索的数据库名, 支持多库同时搜索XSSearch
addQueryString()增加默认搜索语句XSSearch
addQueryTerm()增加默认搜索词汇XSSearch
addRange()添加搜索过滤区间或范围XSSearch
addSearchLog()添加搜索日志关键词到缓冲区里XSSearch
addWeight()添加权重索引词XSSearch
close()关闭连接XSServer
count()估算搜索语句的匹配数据量XSSearch
execCommand()执行服务端指令并获取返回值XSServer
getAllSynonyms()获取当前库内的全部同义词列表XSSearch
getConnString()Returns 连接字符串XSServer
getCorrectedQuery()获取修正后的搜索词列表XSSearch
getDbTotal()获取搜索数据库内的数据总量XSSearch
getExpandedQuery()获取展开的搜索词列表XSSearch
getFacets()读取最近一次分面搜索记数XSSearch
getHotQuery()获取热门搜索词列表XSSearch
getLastCount()获取最近那次搜索的匹配总数估值XSSearch
getProject()获取当前项目名称XSServer
getQuery()获取解析后的搜索语句XSSearch
getRelatedQuery()获取相关搜索词列表XSSearch
getRespond()从服务器读取响应指令XSServer
getSocket()获取连接资源描述符XSServer
getSynonyms()获取指定词汇的同义词列表XSSearch
hasRespond()判断服务端是否有可读数据XSServer
highlight()搜索结果字符串高亮处理XSSearch
markResetScheme()标记字段方案重置XSSearch
open()连接搜索服务端并初始化XSSearch
reopen()重新打开连接XSServer
search()获取匹配的搜索结果文档XSSearch
sendCommand()往服务器直接发送指令 (无缓存)XSServer
setAutoSynonyms()开启自动同义词搜索功能XSSearch
setCharset()设置字符集XSSearch
setCollapse()设置折叠搜索结果XSSearch
setCutOff()设置百分比/权重剔除参数XSSearch
setDb()设置要搜索的数据库名XSSearch
setDocOrder()设置结果按索引入库先后排序XSSearch
setFacets()设置分面搜索记数XSSearch
setFuzzy()开启模糊搜索XSSearch
setGeodistSort()设置地理位置距离排序方式XSSearch
setLimit()设置搜索结果的数量和偏移XSSearch
setMultiSort()设置多字段组合排序方式XSSearch
setProject()设置当前项目XSServer
setQuery()设置默认搜索语句XSSearch
setRequireMatchedTerm()设置在搜索结果文档中返回匹配词表XSSearch
setScwsMulti()设置当前搜索语句的分词复合等级XSSearch
setSort()设置搜索结果的排序方式XSSearch
setSynonymScale()设置同义词搜索的权重比例XSSearch
setTimeout()设置服务端超时秒数XSServer
terms()获取搜索语句中的高亮词条列表XSSearch


Protected 方法

隐去继承来的方法
名称描述定义于
check()检测服务端的连接情况XSServer
connect()连接服务端XSServer
read()读取数据XSServer
write()写入数据XSServer


属性明细

allSynonyms 属性 只读 (自版本 v1.3.0 起可用)

public array getAllSynonyms(int $limit=0, int $offset=0,
bool $stemmed=false)

获取当前库内的全部同义词列表

correctedQuery 属性 只读

public array getCorrectedQuery(string $query=NULL)

获取修正后的搜索词列表 通常当某次检索结果数量偏少时, 可以用该函数设计 "你是不是要找: ..." 功能

dbTotal 属性 只读

public int getDbTotal()

获取搜索数据库内的数据总量

facets 属性 (自版本 v1.1.0 起可用)

public array getFacets(string $field=NULL)

public XSSearch setFacets(mixed $field, bool $exact=false)

读取最近一次分面搜索记数 必须在某一次 search 之后调用本函数才有意义

hotQuery 属性 只读

public array getHotQuery(int $limit=6, string $type='total')

获取热门搜索词列表

lastCount 属性 只读

public int getLastCount()

获取最近那次搜索的匹配总数估值


参见

search

query 属性

public string getQuery(string $query=NULL)

public XSSearch setQuery(string $query)

获取解析后的搜索语句

relatedQuery 属性 只读

public array getRelatedQuery(string $query=NULL, int
$limit=6)

获取相关搜索词列表


方法明细

addDb() 方法
public XSSearch addDb(string $name)
$namestring
{return}XSSearch返回对象本身以支持串接操作
源码: sdk/php/lib/XSSearch.class.php#L540 (显示)

添加搜索的数据库名, 支持多库同时搜索


参见

setDb

addQueryString() 方法
public string addQueryString(string $query, int $addOp=0, float $scale=1)
$querystring搜索语句
$addOpint与旧语句的结合操作符, 如果无旧语句或为空则这此无意义, 支持的操作符有: XS_CMD_QUERY_OP_AND XS_CMD_QUERY_OP_OR XS_CMD_QUERY_OP_AND_NOT XS_CMD_QUERY_OP_XOR XS_CMD_QUERY_OP_AND_MAYBE XS_CMD_QUERY_OP_FILTER
$scalefloat权重计算缩放比例, 默认为 1表示不缩放, 其它值范围 0.xx ~ 655.35
{return}string修正后的搜索语句
源码: sdk/php/lib/XSSearch.class.php#L997 (显示)

增加默认搜索语句

addQueryTerm() 方法
public XSSearch addQueryTerm(string $field, string|array $term, int $addOp=0, float $scale=1)
$fieldstring索引词所属的字段, 若为混合区词汇可设为 null 或 body 型的字段名
$termstring|array索引词或列表
$addOpint与旧语句的结合操作符, 如果无旧语句或为空则这此无意义, 支持的操作符有:
$scalefloat权重计算缩放比例, 默认为 1表示不缩放, 其它值范围 0.xx ~ 655.35
{return}XSSearch返回对象本身以支持串接操作
源码: sdk/php/lib/XSSearch.class.php#L1018 (显示)

增加默认搜索词汇


参见

注:自 v1.4.10 起,允许传入数组,多词之间通过 defaultOp 连接,并且这些词不会再被分词。

addRange() 方法
public XSSearch addRange(string $field, mixed $from, mixed $to)
$fieldstring
$frommixed起始值(不包含), 若设为 null 则相当于匹配 <= to (字典顺序)
$tomixed结束值(包含), 若设为 null 则相当于匹配 >= from (字典顺序)
{return}XSSearch返回对象本身以支持串接操作
源码: sdk/php/lib/XSSearch.class.php#L395 (显示)

添加搜索过滤区间或范围

addSearchLog() 方法 (自版本 v1.1.1 起可用)
public void addSearchLog(string $query, int $wdf=1)
$querystring需要记录的数据
$wdfint需要记录的次数, 默认为 1
源码: sdk/php/lib/XSSearch.class.php#L879 (显示)

添加搜索日志关键词到缓冲区里 需要调用 XSIndex::flushLogging 才能确保立即刷新, 否则要隔一段时间

addWeight() 方法
public XSSearch addWeight(string $field, string $term, float $weight=1)
$fieldstring索引词所属的字段
$termstring索引词
$weightfloat权重计算缩放比例
{return}XSSearch返回对象本身以支持串接操作
源码: sdk/php/lib/XSSearch.class.php#L432 (显示)

添加权重索引词 无论是否包含这种词都不影响搜索匹配, 但会参与计算结果权重, 使结果的相关度更高


参见

addQueryTerm

count() 方法
public int count(string $query=NULL)
$querystring搜索语句, 若传入 null 使用默认语句, 调用后会还原默认排序方式 如果搜索语句和最近一次 search 的语句一样, 请改用 getLastCount 以提升效率
最大长度为 80 字节
{return}int匹配的搜索结果数量, 估算数值
源码: sdk/php/lib/XSSearch.class.php#L595 (显示)

估算搜索语句的匹配数据量

getAllSynonyms() 方法 (自版本 v1.3.0 起可用)
public array getAllSynonyms(int $limit=0, int $offset=0, bool $stemmed=false)
$limitint数量上限, 若设为 0 则启用默认值 100 个
$offsetint偏移量, 即跳过的结果数量, 默认为 0
$stemmedbool是否包含处理过的词根同义词, 默认为 false 表示否
{return}array同义词记录数组, 每个词条为键, 同义词条组成的数组为值
源码: sdk/php/lib/XSSearch.class.php#L164 (显示)

获取当前库内的全部同义词列表

getCorrectedQuery() 方法
public array getCorrectedQuery(string $query=NULL)
$querystring需要展开的前缀, 可为拼音、英文、中文
{return}array返回搜索词组成的数组
源码: sdk/php/lib/XSSearch.class.php#L843 (显示)

获取修正后的搜索词列表 通常当某次检索结果数量偏少时, 可以用该函数设计 "你是不是要找: ..." 功能

getDbTotal() 方法
public int getDbTotal()
{return}int数据总量
源码: sdk/php/lib/XSSearch.class.php#L707 (显示)

获取搜索数据库内的数据总量

getExpandedQuery() 方法
public array getExpandedQuery(string $query, int $limit=10)
$querystring需要展开的前缀, 可为拼音、英文、中文
$limitint需要返回的搜索词数量上限, 默认为 10, 最大值为 20
{return}array返回搜索词组成的数组
源码: sdk/php/lib/XSSearch.class.php#L803 (显示)

获取展开的搜索词列表

getFacets() 方法 (自版本 v1.1.0 起可用)
public array getFacets(string $field=NULL)
$fieldstring读取分面记数的字段, 若为 null 则返回全部分面搜索记录
{return}array返回由值和计数组成的关联数组, 若不存在或未曾登记过则返回空数组
源码: sdk/php/lib/XSSearch.class.php#L475 (显示)

读取最近一次分面搜索记数 必须在某一次 search 之后调用本函数才有意义

getHotQuery() 方法
public array getHotQuery(int $limit=6, string $type='total')
$limitint需要返回的热门搜索数量上限, 默认为 6, 最大值为 50
$typestring排序类型, 默认为 total(搜索总量), 可选值还有 lastnum(上周), currnum(本周)
{return}array返回以搜索词为键, 搜索指数为值的关联数组
源码: sdk/php/lib/XSSearch.class.php#L721 (显示)

获取热门搜索词列表

getLastCount() 方法
public int getLastCount()
{return}int匹配数据量, 如从未搜索则返回 false
源码: sdk/php/lib/XSSearch.class.php#L698 (显示)

获取最近那次搜索的匹配总数估值


参见

search

getQuery() 方法
public string getQuery(string $query=NULL)
$querystring搜索语句, 若传入 null 使用默认语句
{return}string返回解析后的搜索语句
源码: sdk/php/lib/XSSearch.class.php#L204 (显示)

获取解析后的搜索语句

getRelatedQuery() 方法
public array getRelatedQuery(string $query=NULL, int $limit=6)
$querystring搜索语句, 若传入 null 使用默认语句
$limitint需要返回的相关搜索数量上限, 默认为 6, 最大值为 20
{return}array返回搜索词组成的数组
源码: sdk/php/lib/XSSearch.class.php#L755 (显示)

获取相关搜索词列表

getSynonyms() 方法 (自版本 v1.4.9 起可用)
public array getSynonyms(string $term)
$termstring要查询同义词的原词
{return}array同义词记录数组, 不存在同义词则返回空数组
源码: sdk/php/lib/XSSearch.class.php#L187 (显示)

获取指定词汇的同义词列表

highlight() 方法
public string highlight(string $value, $strtr=false)
$valuestring需要处理的数据
$strtr
{return}string高亮后的数据
源码: sdk/php/lib/XSSearch.class.php#L894 (显示)

搜索结果字符串高亮处理 对搜索结果文档的字段进行高亮、飘红处理, 高亮部分加上 em 标记

markResetScheme() 方法
public void markResetScheme()
源码: sdk/php/lib/XSSearch.class.php#L552 (显示)

标记字段方案重置


参见

XS::setScheme

open() 方法
public void open(string $conn)
$connstring
源码: sdk/php/lib/XSSearch.class.php#L55 (显示)

连接搜索服务端并初始化 每次重新连接后所有的搜索语句相关设置均被还原


参见

XSServer::open

search() 方法
public XSDocument[] search(string $query=NULL, boolean $saveHighlight=true)
$querystring搜索语句, 若传入 null 使用默认语句, 最大长度为 80 字节
$saveHighlightboolean是否存储查询词用于高亮处理, 默认为 true
{return}XSDocument[]匹配的搜索结果文档列表
源码: sdk/php/lib/XSSearch.class.php#L620 (显示)

获取匹配的搜索结果文档 默认提取最匹配的前 self::PAGE_SIZE 个结果 如需分页请参见 setLimit 设置, 每次调用本函数后都会还原 setLimit 的设置

setAutoSynonyms() 方法 (自版本 v1.3.0 起可用)
public XSSearch setAutoSynonyms(bool $value=true)
$valuebool设为 true 表示开启同义词功能, 设为 false 关闭同义词功能
{return}XSSearch返回对象本身以支持串接操作
源码: sdk/php/lib/XSSearch.class.php#L129 (显示)

开启自动同义词搜索功能

setCharset() 方法
public XSSearch setCharset(string $charset)
$charsetstring
{return}XSSearch返回对象本身以支持串接操作
源码: sdk/php/lib/XSSearch.class.php#L69 (显示)

设置字符集 默认字符集是 UTF-8, 如果您提交的搜索语句和预期得到的搜索结果为其它字符集, 请先设置

setCollapse() 方法
public XSSearch setCollapse(string $field, int $num=1)
$fieldstring依据该字段的值折叠搜索结果, 设为 null 则取消折叠
$numint折叠后只是返最匹配的数据数量, 默认为 1, 最大值 255
{return}XSSearch返回对象本身以支持串接操作
源码: sdk/php/lib/XSSearch.class.php#L378 (显示)

设置折叠搜索结果 注意, 每当调用 setDbaddDb 修改当前数据库时会重置此项设置

setCutOff() 方法
public XSSearch setCutOff(int $percent, float $weight=0)
$percentint剔除匹配百分比低于此值的文档, 值范围 0-100
$weightfloat剔除权重低于此值的文档, 值范围 0.1-25.5, 0 表示不剔除
{return}XSSearch返回对象本身以支持串接操作
源码: sdk/php/lib/XSSearch.class.php#L98 (显示)

设置百分比/权重剔除参数 通常是在开启 setFuzzy 或使用 OR 连接搜索语句时才需要设置此项


参见

setFuzzy

setDb() 方法
public XSSearch setDb(string $name)
$namestring
{return}XSSearch返回对象本身以支持串接操作
源码: sdk/php/lib/XSSearch.class.php#L523 (显示)

设置要搜索的数据库名 若未设置, 使用默认数据库, 数据库必须位于服务端用户目录下 对于远程数据库, 请使用 stub 文件来支持

setDocOrder() 方法
public XSSearch setDocOrder(bool $asc=false)
$ascbool是否为正序排列, 即从先到后, 默认为反序
{return}XSSearch返回对象本身以支持串接操作
源码: sdk/php/lib/XSSearch.class.php#L363 (显示)

设置结果按索引入库先后排序 注意, 此项排序不影响相关排序, 权重高的仍会在前面, 主要适合用于布尔检索

setFacets() 方法 (自版本 v1.1.0 起可用)
public XSSearch setFacets(mixed $field, bool $exact=false)
$fieldmixed要进行分组统计的字段或字段组成的数组, 最多同时支持 8 个
$exactbool是否要求绝对精确搜索, 这会造成较大的系统开销
{return}XSSearch返回对象本身以支持串接操作
源码: sdk/php/lib/XSSearch.class.php#L449 (显示)

设置分面搜索记数 用于记录匹配搜索结果中按字段值分组的数量统计, 每次调用 search 后会还原设置 对于多次调用 $exact 参数以最后一次为准, 只支持字段值不超过 255 字节的情况

自 v1.4.10 起自动对空值的字段按 term 分面统计(相当于多值)

setFuzzy() 方法
public XSSearch setFuzzy(bool $value=true)
$valuebool设为 true 表示开启模糊搜索, 设为 false 关闭模糊搜索
{return}XSSearch返回对象本身以支持串接操作
源码: sdk/php/lib/XSSearch.class.php#L84 (显示)

开启模糊搜索 默认情况只返回包含所有搜索词的记录, 通过本方法可以获得更多搜索结果

setGeodistSort() 方法 (自版本 v1.4.10 起可用)
public XSSearch setGeodistSort(array $fields, bool $reverse=false, bool $relevance_first=false)
$fieldsarray在此定义地理位置信息原点坐标信息,数组至少必须包含2个值
$reversebool是否由远及近排序, 默认为由近及远
$relevance_firstbool是否优先相关性排序, 默认为否
{return}XSSearch返回对象本身以支持串接操作
源码: sdk/php/lib/XSSearch.class.php#L251 (显示)

设置地理位置距离排序方式

请务必先以 numeric 类型字段定义经纬度坐标字段,例如用 lon 代表经度、lat 代表纬度, 那么设置排序代码如下,必须将经度定义在前纬度在后:
$search->setGeodistSort(array('lon' => 39.18, 'lat' => 120.51));


setLimit() 方法
public XSSearch setLimit(int $limit, int $offset=0)
$limitint数量上限, 若设为 0 则启用默认值 self::PAGE_SIZE
$offsetint偏移量, 即跳过的结果数量, 默认为 0
{return}XSSearch返回对象本身以支持串接操作
源码: sdk/php/lib/XSSearch.class.php#L509 (显示)

设置搜索结果的数量和偏移 用于搜索结果分页, 每次调用 search 后会还原这2个变量到初始值

setMultiSort() 方法 (自版本 v1.1.0 起可用)
public XSSearch setMultiSort(array $fields, bool $reverse=false, bool $relevance_first=false)
$fieldsarray排序依据的字段数组, 以字段名称为键, true/false 为值表示正序或逆序
$reversebool是否为倒序显示, 默认为正向, 此处和 setSort 略有不同
$relevance_firstbool是否优先相关性排序, 默认为否
{return}XSSearch返回对象本身以支持串接操作
源码: sdk/php/lib/XSSearch.class.php#L292 (显示)

设置多字段组合排序方式 当您需要根据多个字段的值按不同的方式综合排序时, 请使用这项

setQuery() 方法
public XSSearch setQuery(string $query)
$querystring搜索语句, 设为 null 则清空搜索语句, 最大长度为 80 字节
{return}XSSearch返回对象本身以支持串接操作
源码: sdk/php/lib/XSSearch.class.php#L227 (显示)

设置默认搜索语句 用于不带参数的 countsearch 以及 terms 调用
可与 addWeight 组合运用

setRequireMatchedTerm() 方法 (自版本 v1.4.8 起可用)
public XSSearch setRequireMatchedTerm(bool $value=true)
$valuebool设为 true 表示开启返回, 设为 false 关闭该功能, 默认是不开启
{return}XSSearch返回对象本身以支持串接操作
源码: sdk/php/lib/XSSearch.class.php#L114 (显示)

设置在搜索结果文档中返回匹配词表 请在 search 前调用本方法, 然后使用 XSDocument::matched 获取

setScwsMulti() 方法 (自版本 v1.4.7 起可用)
public XSSearch setScwsMulti(int $level)
$levelint要设置的分词复合等级
{return}XSSearch返回自身对象以支持串接操作
源码: sdk/php/lib/XSSearch.class.php#L492 (显示)

设置当前搜索语句的分词复合等级 复合等级是 scws 分词粒度控制的一个重要参数, 是长词细分处理依据, 默认为 3, 值范围 0~15 注意: 这个设置仅直对本次搜索有效, 仅对设置之后的 setQuery 起作用,
由于 query 设计的方式问题, 目前无法支持搜索语句单字切分, 但您可以在模糊检索时设为 0 来关闭复合分词

setSort() 方法
public XSSearch setSort(string $field, bool $asc=false, bool $relevance_first=false)
$fieldstring依据指定字段的值排序, 设为 null 则用默认顺序
$ascbool是否为正序排列, 即从小到大, 从少到多, 默认为反序
$relevance_firstbool是否优先相关性排序, 默认为否
{return}XSSearch返回对象本身以支持串接操作
源码: sdk/php/lib/XSSearch.class.php#L335 (显示)

设置搜索结果的排序方式 注意, 每当调用 setDbaddDb 修改当前数据库时会重置排序设定
此函数第一参数的用法与 setMultiSort 兼容, 即也可以用该方法实现多字段排序

setSynonymScale() 方法 (自版本 v1.4.7 起可用)
public XSSearch setSynonymScale(float $value)
$valuefloat取值范围 0.01-2.55, 1 表示不调整
{return}XSSearch返回对象本身以支持串接操作
源码: sdk/php/lib/XSSearch.class.php#L147 (显示)

设置同义词搜索的权重比例

terms() 方法
public array terms(string $query=NULL, bool $convert=true)
$querystring搜索语句, 若传入 null 使用默认语句, 最大长度为 80 字节
$convertbool是否进行编码转换, 默认为 true
{return}array可用于高亮显示的词条列表
源码: sdk/php/lib/XSSearch.class.php#L563 (显示)

获取搜索语句中的高亮词条列表
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  xunsearch sphinx 服务器