6.7.附加方法

优质
小牛编辑
131浏览
2023-12-01

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";