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->search->setQuery($str)->setLimit(10, 10)->search(); $xs->close();
Public 属性
隐去继承来的属性名称 | 类型 | 描述 | 定义于 |
---|---|---|---|
allSynonyms | array | 获取当前库内的全部同义词列表 | XSSearch |
connString | string | 连接字符串 | XSServer |
correctedQuery | array | 获取修正后的搜索词列表 | XSSearch |
dbTotal | int | 获取搜索数据库内的数据总量 | XSSearch |
facets | array | 读取最近一次分面搜索记数 | XSSearch |
hotQuery | array | 获取热门搜索词列表 | XSSearch |
lastCount | int | 获取最近那次搜索的匹配总数估值 | XSSearch |
project | string | 获取当前项目名称 | XSServer |
query | string | 获取解析后的搜索语句 | XSSearch |
relatedQuery | array | 获取相关搜索词列表 | XSSearch |
respond | XSCommand | 从服务器读取响应指令 | XSServer |
socket | mixed | 获取连接资源描述符 | XSServer |
xs | XS | 服务端关联的 XS 对象 | XSServer |
Protected 属性
隐去继承来的属性名称 | 类型 | 描述 | 定义于 |
---|---|---|---|
_conn | XSServer | ||
_flag | XSServer | ||
_project | XSServer | ||
_sendBuffer | XSServer | ||
_sock | XSServer |
Public 方法
隐去继承来的方法名称 | 描述 | 定义于 |
---|---|---|
__construct() | 构造函数, 打开连接 | XSServer |
__destruct() | 析构函数, 关闭连接 | XSServer |
__get() | 魔术方法 __get | XSComponent |
__isset() | 魔术方法 __isset | XSComponent |
__set() | 魔术方法 __set | XSComponent |
__unset() | 魔术方法 __unset | XSComponent |
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()
获取最近那次搜索的匹配总数估值
参见
searchquery 属性
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) | ||
$name | string | |
{return} | XSSearch | 返回对象本身以支持串接操作 |
添加搜索的数据库名, 支持多库同时搜索
参见
setDbaddQueryString() 方法
public string addQueryString(string $query, int $addOp=0, float $scale=1) | ||
$query | string | 搜索语句 |
$addOp | int | 与旧语句的结合操作符, 如果无旧语句或为空则这此无意义, 支持的操作符有: 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 |
$scale | float | 权重计算缩放比例, 默认为 1表示不缩放, 其它值范围 0.xx ~ 655.35 |
{return} | string | 修正后的搜索语句 |
增加默认搜索语句
addQueryTerm() 方法
public XSSearch addQueryTerm(string $field, string|array $term, int $addOp=0, float $scale=1) | ||
$field | string | 索引词所属的字段, 若为混合区词汇可设为 null 或 body 型的字段名 |
$term | string|array | 索引词或列表 |
$addOp | int | 与旧语句的结合操作符, 如果无旧语句或为空则这此无意义, 支持的操作符有: |
$scale | float | 权重计算缩放比例, 默认为 1表示不缩放, 其它值范围 0.xx ~ 655.35 |
{return} | XSSearch | 返回对象本身以支持串接操作 |
增加默认搜索词汇
参见
注:自 v1.4.10 起,允许传入数组,多词之间通过 defaultOp 连接,并且这些词不会再被分词。addRange() 方法
public XSSearch addRange(string $field, mixed $from, mixed $to) | ||
$field | string | |
$from | mixed | 起始值(不包含), 若设为 null 则相当于匹配 <= to (字典顺序) |
$to | mixed | 结束值(包含), 若设为 null 则相当于匹配 >= from (字典顺序) |
{return} | XSSearch | 返回对象本身以支持串接操作 |
添加搜索过滤区间或范围
addSearchLog() 方法 (自版本 v1.1.1 起可用)
public void addSearchLog(string $query, int $wdf=1) | ||
$query | string | 需要记录的数据 |
$wdf | int | 需要记录的次数, 默认为 1 |
添加搜索日志关键词到缓冲区里 需要调用 XSIndex::flushLogging 才能确保立即刷新, 否则要隔一段时间
addWeight() 方法
public XSSearch addWeight(string $field, string $term, float $weight=1) | ||
$field | string | 索引词所属的字段 |
$term | string | 索引词 |
$weight | float | 权重计算缩放比例 |
{return} | XSSearch | 返回对象本身以支持串接操作 |
添加权重索引词 无论是否包含这种词都不影响搜索匹配, 但会参与计算结果权重, 使结果的相关度更高
参见
addQueryTermcount() 方法
public int count(string $query=NULL) | ||
$query | string | 搜索语句, 若传入 null 使用默认语句, 调用后会还原默认排序方式 如果搜索语句和最近一次 search 的语句一样, 请改用 getLastCount 以提升效率 最大长度为 80 字节 |
{return} | int | 匹配的搜索结果数量, 估算数值 |
估算搜索语句的匹配数据量
getAllSynonyms() 方法 (自版本 v1.3.0 起可用)
public array getAllSynonyms(int $limit=0, int $offset=0, bool $stemmed=false) | ||
$limit | int | 数量上限, 若设为 0 则启用默认值 100 个 |
$offset | int | 偏移量, 即跳过的结果数量, 默认为 0 |
$stemmed | bool | 是否包含处理过的词根同义词, 默认为 false 表示否 |
{return} | array | 同义词记录数组, 每个词条为键, 同义词条组成的数组为值 |
获取当前库内的全部同义词列表
getCorrectedQuery() 方法
public array getCorrectedQuery(string $query=NULL) | ||
$query | string | 需要展开的前缀, 可为拼音、英文、中文 |
{return} | array | 返回搜索词组成的数组 |
获取修正后的搜索词列表 通常当某次检索结果数量偏少时, 可以用该函数设计 "你是不是要找: ..." 功能
getDbTotal() 方法
public int getDbTotal() | ||
{return} | int | 数据总量 |
获取搜索数据库内的数据总量
getExpandedQuery() 方法
public array getExpandedQuery(string $query, int $limit=10) | ||
$query | string | 需要展开的前缀, 可为拼音、英文、中文 |
$limit | int | 需要返回的搜索词数量上限, 默认为 10, 最大值为 20 |
{return} | array | 返回搜索词组成的数组 |
获取展开的搜索词列表
getFacets() 方法 (自版本 v1.1.0 起可用)
public array getFacets(string $field=NULL) | ||
$field | string | 读取分面记数的字段, 若为 null 则返回全部分面搜索记录 |
{return} | array | 返回由值和计数组成的关联数组, 若不存在或未曾登记过则返回空数组 |
读取最近一次分面搜索记数 必须在某一次 search 之后调用本函数才有意义
getHotQuery() 方法
public array getHotQuery(int $limit=6, string $type='total') | ||
$limit | int | 需要返回的热门搜索数量上限, 默认为 6, 最大值为 50 |
$type | string | 排序类型, 默认为 total(搜索总量), 可选值还有 lastnum(上周), currnum(本周) |
{return} | array | 返回以搜索词为键, 搜索指数为值的关联数组 |
获取热门搜索词列表
getLastCount() 方法
public int getLastCount() | ||
{return} | int | 匹配数据量, 如从未搜索则返回 false |
获取最近那次搜索的匹配总数估值
参见
searchgetQuery() 方法
public string getQuery(string $query=NULL) | ||
$query | string | 搜索语句, 若传入 null 使用默认语句 |
{return} | string | 返回解析后的搜索语句 |
获取解析后的搜索语句
getRelatedQuery() 方法
public array getRelatedQuery(string $query=NULL, int $limit=6) | ||
$query | string | 搜索语句, 若传入 null 使用默认语句 |
$limit | int | 需要返回的相关搜索数量上限, 默认为 6, 最大值为 20 |
{return} | array | 返回搜索词组成的数组 |
获取相关搜索词列表
getSynonyms() 方法 (自版本 v1.4.9 起可用)
public array getSynonyms(string $term) | ||
$term | string | 要查询同义词的原词 |
{return} | array | 同义词记录数组, 不存在同义词则返回空数组 |
获取指定词汇的同义词列表
highlight() 方法
public string highlight(string $value, $strtr=false) | ||
$value | string | 需要处理的数据 |
$strtr | ||
{return} | string | 高亮后的数据 |
搜索结果字符串高亮处理 对搜索结果文档的字段进行高亮、飘红处理, 高亮部分加上 em 标记
markResetScheme() 方法
public void markResetScheme() |
标记字段方案重置
参见
XS::setSchemeopen() 方法
public void open(string $conn) | ||
$conn | string |
连接搜索服务端并初始化 每次重新连接后所有的搜索语句相关设置均被还原
参见
XSServer::opensearch() 方法
public XSDocument[] search(string $query=NULL, boolean $saveHighlight=true) | ||
$query | string | 搜索语句, 若传入 null 使用默认语句, 最大长度为 80 字节 |
$saveHighlight | boolean | 是否存储查询词用于高亮处理, 默认为 true |
{return} | XSDocument[] | 匹配的搜索结果文档列表 |
获取匹配的搜索结果文档 默认提取最匹配的前 self::PAGE_SIZE 个结果 如需分页请参见 setLimit 设置, 每次调用本函数后都会还原 setLimit 的设置
setAutoSynonyms() 方法 (自版本 v1.3.0 起可用)
public XSSearch setAutoSynonyms(bool $value=true) | ||
$value | bool | 设为 true 表示开启同义词功能, 设为 false 关闭同义词功能 |
{return} | XSSearch | 返回对象本身以支持串接操作 |
开启自动同义词搜索功能
setCharset() 方法
public XSSearch setCharset(string $charset) | ||
$charset | string | |
{return} | XSSearch | 返回对象本身以支持串接操作 |
设置字符集 默认字符集是 UTF-8, 如果您提交的搜索语句和预期得到的搜索结果为其它字符集, 请先设置
setCollapse() 方法
public XSSearch setCollapse(string $field, int $num=1) | ||
$field | string | 依据该字段的值折叠搜索结果, 设为 null 则取消折叠 |
$num | int | 折叠后只是返最匹配的数据数量, 默认为 1, 最大值 255 |
{return} | XSSearch | 返回对象本身以支持串接操作 |
设置折叠搜索结果 注意, 每当调用 setDb 或 addDb 修改当前数据库时会重置此项设置
setCutOff() 方法
public XSSearch setCutOff(int $percent, float $weight=0) | ||
$percent | int | 剔除匹配百分比低于此值的文档, 值范围 0-100 |
$weight | float | 剔除权重低于此值的文档, 值范围 0.1-25.5, 0 表示不剔除 |
{return} | XSSearch | 返回对象本身以支持串接操作 |
设置百分比/权重剔除参数 通常是在开启 setFuzzy 或使用 OR 连接搜索语句时才需要设置此项
参见
setFuzzysetDb() 方法
public XSSearch setDb(string $name) | ||
$name | string | |
{return} | XSSearch | 返回对象本身以支持串接操作 |
设置要搜索的数据库名 若未设置, 使用默认数据库, 数据库必须位于服务端用户目录下 对于远程数据库, 请使用 stub 文件来支持
setDocOrder() 方法
public XSSearch setDocOrder(bool $asc=false) | ||
$asc | bool | 是否为正序排列, 即从先到后, 默认为反序 |
{return} | XSSearch | 返回对象本身以支持串接操作 |
设置结果按索引入库先后排序 注意, 此项排序不影响相关排序, 权重高的仍会在前面, 主要适合用于布尔检索
setFacets() 方法 (自版本 v1.1.0 起可用)
public XSSearch setFacets(mixed $field, bool $exact=false) | ||
$field | mixed | 要进行分组统计的字段或字段组成的数组, 最多同时支持 8 个 |
$exact | bool | 是否要求绝对精确搜索, 这会造成较大的系统开销 |
{return} | XSSearch | 返回对象本身以支持串接操作 |
设置分面搜索记数 用于记录匹配搜索结果中按字段值分组的数量统计, 每次调用 search 后会还原设置 对于多次调用 $exact 参数以最后一次为准, 只支持字段值不超过 255 字节的情况
自 v1.4.10 起自动对空值的字段按 term 分面统计(相当于多值)
setFuzzy() 方法
public XSSearch setFuzzy(bool $value=true) | ||
$value | bool | 设为 true 表示开启模糊搜索, 设为 false 关闭模糊搜索 |
{return} | XSSearch | 返回对象本身以支持串接操作 |
开启模糊搜索 默认情况只返回包含所有搜索词的记录, 通过本方法可以获得更多搜索结果
setGeodistSort() 方法 (自版本 v1.4.10 起可用)
public XSSearch setGeodistSort(array $fields, bool $reverse=false, bool $relevance_first=false) | ||
$fields | array | 在此定义地理位置信息原点坐标信息,数组至少必须包含2个值 |
$reverse | bool | 是否由远及近排序, 默认为由近及远 |
$relevance_first | bool | 是否优先相关性排序, 默认为否 |
{return} | XSSearch | 返回对象本身以支持串接操作 |
设置地理位置距离排序方式
请务必先以 numeric 类型字段定义经纬度坐标字段,例如用 lon 代表经度、lat 代表纬度, 那么设置排序代码如下,必须将经度定义在前纬度在后:
$search->setGeodistSort(array('lon' => 39.18, 'lat' => 120.51));
setLimit() 方法
public XSSearch setLimit(int $limit, int $offset=0) | ||
$limit | int | 数量上限, 若设为 0 则启用默认值 self::PAGE_SIZE |
$offset | int | 偏移量, 即跳过的结果数量, 默认为 0 |
{return} | XSSearch | 返回对象本身以支持串接操作 |
设置搜索结果的数量和偏移 用于搜索结果分页, 每次调用 search 后会还原这2个变量到初始值
setMultiSort() 方法 (自版本 v1.1.0 起可用)
public XSSearch setMultiSort(array $fields, bool $reverse=false, bool $relevance_first=false) | ||
$fields | array | 排序依据的字段数组, 以字段名称为键, true/false 为值表示正序或逆序 |
$reverse | bool | 是否为倒序显示, 默认为正向, 此处和 setSort 略有不同 |
$relevance_first | bool | 是否优先相关性排序, 默认为否 |
{return} | XSSearch | 返回对象本身以支持串接操作 |
设置多字段组合排序方式 当您需要根据多个字段的值按不同的方式综合排序时, 请使用这项
setQuery() 方法
public XSSearch setQuery(string $query) | ||
$query | string | 搜索语句, 设为 null 则清空搜索语句, 最大长度为 80 字节 |
{return} | XSSearch | 返回对象本身以支持串接操作 |
设置默认搜索语句 用于不带参数的 count 或 search 以及 terms 调用
可与 addWeight 组合运用
setRequireMatchedTerm() 方法 (自版本 v1.4.8 起可用)
public XSSearch setRequireMatchedTerm(bool $value=true) | ||
$value | bool | 设为 true 表示开启返回, 设为 false 关闭该功能, 默认是不开启 |
{return} | XSSearch | 返回对象本身以支持串接操作 |
设置在搜索结果文档中返回匹配词表 请在 search 前调用本方法, 然后使用 XSDocument::matched 获取
setScwsMulti() 方法 (自版本 v1.4.7 起可用)
public XSSearch setScwsMulti(int $level) | ||
$level | int | 要设置的分词复合等级 |
{return} | XSSearch | 返回自身对象以支持串接操作 |
设置当前搜索语句的分词复合等级 复合等级是 scws 分词粒度控制的一个重要参数, 是长词细分处理依据, 默认为 3, 值范围 0~15 注意: 这个设置仅直对本次搜索有效, 仅对设置之后的 setQuery 起作用,
由于 query 设计的方式问题, 目前无法支持搜索语句单字切分, 但您可以在模糊检索时设为 0 来关闭复合分词
setSort() 方法
public XSSearch setSort(string $field, bool $asc=false, bool $relevance_first=false) | ||
$field | string | 依据指定字段的值排序, 设为 null 则用默认顺序 |
$asc | bool | 是否为正序排列, 即从小到大, 从少到多, 默认为反序 |
$relevance_first | bool | 是否优先相关性排序, 默认为否 |
{return} | XSSearch | 返回对象本身以支持串接操作 |
设置搜索结果的排序方式 注意, 每当调用 setDb 或 addDb 修改当前数据库时会重置排序设定
此函数第一参数的用法与 setMultiSort 兼容, 即也可以用该方法实现多字段排序
setSynonymScale() 方法 (自版本 v1.4.7 起可用)
public XSSearch setSynonymScale(float $value) | ||
$value | float | 取值范围 0.01-2.55, 1 表示不调整 |
{return} | XSSearch | 返回对象本身以支持串接操作 |
设置同义词搜索的权重比例
terms() 方法
public array terms(string $query=NULL, bool $convert=true) | ||
$query | string | 搜索语句, 若传入 null 使用默认语句, 最大长度为 80 字节 |
$convert | bool | 是否进行编码转换, 默认为 true |
{return} | array | 可用于高亮显示的词条列表 |
获取搜索语句中的高亮词条列表
相关文章推荐
- 小心服务器内存居高不下的元凶--WebAPI服务
- 运维入门
- 利用开源软件打造自己的全功能远程工具
- Linux5.9无人值守安装
- 数据中心和云未来的十二大趋势
- 用vsftp快速搭建ftp服务器
- Linux快速构建apache web服务器
- 服务器监控策略浅谈
- 如何降低服务器采购成本 原理分析
- 建议的服务器分区办法
- 服务器托管六大优势分析
- Erlang实现的一个Web服务器代码实例
- 服务器技术全面解析
- 保护DNS服务器的几点方法小结
- 我国成为全球第二大服务器消费国
- 服务器 安全检查要点[星外提供]
- 服务器应用自动重新启动IIS批处理[原创]_DOS/BAT_脚本之家
- FTP 服务器关于权限的问题
- 批处理设置windows服务器的代码ThecSafe1.9.4第1/3页