6.7.附加方法
6.7.1.BuildExcerpts (产生文本摘要和高亮)
原型:function BuildExcerpts ( $docs, $index, $words, $opts=array() )
该函数用来产生文档片段(摘要)。连接到searchd
,要求它从指定文档中产生片段(摘要),并返回结果。
$docs
为包含各文档内容的数组。$index
为包含索引名字的字符串。给定索引的不同设置(例如字符集、形态学、词形等方面的设置)会被使用。$words
为包含需要高亮的关键字的字符串。它们会按索引的设置被处理。例如,如果英语取词干(stemming)在索引中被设置为允许,那么即使关键词是“shoe”,“shoes”这个词也会被高亮。从版本0.9.9-rc1开始,关键字可以包含通配符,与查询支持的star-syntax类似。$opts
为包含其他可选的高亮参数的hash表:
- "before_match":
- 在匹配的关键字前面插入的字符串。默认为"<b>"。
- "after_match":
- 在匹配的关键字后面插入的字符串。默认为 "<b>".
- "chunk_separator":
- 在摘要块(段落)之间插入的字符串。默认为"...".
- "limit":
- 摘要最多包含的符号(码点)数。整数,默认为256.
- "around":
- 每个关键词块左右选取的词的数目。整数,默认为5.
- "exact_phrase":
- 是否仅高亮精确匹配的整个查询词组,而不是单独的关键词。布尔值,默认为false.
- "single_passage":
- 是否仅抽取最佳的一个段落。布尔值,默认为false.
- "weight_order":
- 对于抽取出的段落,要么根据相关度排序(权重下降),要么根据出现在文档中的顺序(位置递增)。布尔型,默认是false.
失败时返回false。成功时返回包含有片段(摘要)字符串的数组。
6.7.2.UpdateAttributes (更新属性)
原型:function UpdateAttributes ( $index, $attrs, $values )
立即更新指定文档的指定属性值。成功则返回实际被更新的文档数目(0或更多),失败则返回-1。
$index
为待更新的(一个或多个)索引名。$attrs为属性名字符串的数组,其所列的属性会被更新。$attrs
为hash表,$values
表的键为文档ID,$values
表的值为新的属性值的简单数组。
$index
既可以是一个单独的索引名,也可以是一个索引名的列表,就像Query()
的参数。与Query()
不同的是不允许通配符,全部待更新的索引必须明确指出。索引名列表可以包含分布式索引。对分布式索引,更新会同步到全部代理上。
只有在docinfo=extern
这个存储策略下才可以运行更新。更新非常快,因为操作完全在内存中进行,但它们也可以变成持久的,更新会在searchd
干净关闭时(收到SIGTERM信号时)被写入磁盘。在额外限制条件下,MVA属性也可以被更新,参见mva_updates_pool详细了解。
使用示例
$cl->UpdateAttributes ( "test1", array("group_id"), array(1=>array(456)) ); $cl->UpdateAttributes ( "products", array ( "price", "amount_in_stock" ), array ( 1001=>array(123,5), 1002=>array(37,11), 1003=>(25,129) ) );
第一条示例语句会更新索引“test1”中的文档1,设置“group_id”为456.第二条示例语句则更新索引“products”中的文档 1001,1002和1003。文档1001的“price”会被更新为123,“amount_in_stock”会被更新为5;文档 1002,“price”变为37而“amount_in_storage”变为11,等等。
6.7.3.BuildKeywords (获取分词结果)
原型:function BuildKeywords ( $query, $index, $hits )
根据指定索引的符号化(tokenizer)方式的设置,从查询中抽取关键词,也可以同时返回每个关键词出现次数的统计信息。返回一个数组,其元素是一些字典,每个字典包含一个关键字的信息。
$query
是抽取关键字的目标。$index
是某个索引的名字,系统会使用这个索引的符号化(tokenizer)设置,关键词出现次数的统计信息也从这个索引中得出。$hits
是一个布尔值,它指定了是否需要返回关键词出现此处的信息。
使用示例:
$keywords = $cl->BuildKeywords ( "this.is.my query", "test1", false );
6.7.4.EscapeString (转义特殊字符)
原型:function EscapeString ( $string )
查询语言分析器将某些字符理解成特殊操作符,这个函数对字符串中的那些有特殊意义的字符进行转义。返回转义后的字符串。
$string
是待转义的字符串。
表面上看这个函数是多余的,因为可以很容易地在可能调用这个函数的程序里实现这个转义功能。然而这些特殊字符的集合可能随着时间而改变,因此理应提供一个API调用来完成这个功能,并保证任何时候都可以正确地转义全部特殊字符。
使用示例:
$escaped = $cl->EscapeString ( "escaping-sample@query/string" );
6.7.5.Status (查询服务状态)
原型:function Status ()
查询searchd的状态,返回一个数组,数组元素是由状态变量名和值的键值对构成。
使用示例:
$status = $cl->Status (); foreach ( $status as $row ) print join ( ": ", $row ) . "\n";