深入解析PHP狮身人面像
< PHP参数。
cat_id = 2 / /筛选
$ Cl- > setfilter(cat_id
只在ID 1, 3, 7搜索子论坛中
$ Cl- > setfilter(forum_id
范围选择
为今天筛选/释放时间,int时间戳的参数
$ Cl- > setfilterrange(开始时间
价格/筛选
$ Cl- > setfilterrange(价格
数据包
In accordance with the / / item_id group, and in accordance with the order desc ranking
$ Cl- > setgroupby(item_id
排序模式
根据价格降序/排序
$ Cl- > setsortmode(sph_sort_attr_desc,价格);
注:它将覆盖在setgroupby排序
查询中的任何单词
$ Cl- > setmatchmode(sph_match_any);
sph_match_all,所有查询词的匹配(默认模式);
sph_match_any,它匹配任何查询词;
sph_match_phrase,把整个查询作为一个词组,需要一个完整的比赛;
sph_match_boolean,寻找一个查询一个布尔表达式(见5.2节,布尔查询语法);
sph_match_extended,查询为Coreseek /狮身人面像内部查询语言(参见5.3节扩展查询语法)。从Coreseek 0.9.9 3 /狮身人面像版本,此选项是选择sph_match_extended2相反,它提供了更多的功能和更好的性能。此选项保留旧的遗留代码的兼容性,因此即使狮身人面像和它的组成部分包括API升级,旧的应用程序可以继续工作。
sph_match_extended2,使用扩展匹配模式匹配查询的第二版。
sph_match_fullscan,它是强制性的使用完全扫描模式下面描述的匹配查询。值得注意的是,在这种模式下,所有的查询词被忽略。即使过滤器、筛选器范围和组仍然有效,任何文本匹配都不会发生。
从0 30查询开始,将结果返回到1000。
美元setlimits Cl- >(0301000);
狮身人面像索引名称索引的查询
查询(电影票
狮身人面像索引名称索引的查询
$ SP -> setgroupby('item_id ',sph_group_attr,'s_order desc);
$sp->SetFilter ('city_id','1');
$ SP -> setfilter('cat_id,阵列(1));
$ SP ->限量为(0101000);
$ SP -> addquery(电影票','index);
($sp -> resetfilters); / /复位滤波器
($sp -> resetgroupby); / /复位包
$ SP -> setgroupby('item_id ',sph_groupby_attr,'s_order desc);
$ SP -> setfilter('city_id'、‘2');
$ SP -> setfilter('cat_id,阵列(2));
美元setlimits SP >(0, 20, 1000);
$ SP -> addquery(热泉,'index);
($sp -> resetfilters); / /复位滤波器
($sp -> resetgroupby); / /复位包
结果=美元美元-> runquries(SP);
批量查询(或查询)使searchd使可能的内部优化和降低成本的网络连接和进程的创建,无论什么情况,批量查询不引入任何额外的开销相比,一个单一的查询。所以当你运行你的网页多个不同的查询,请考虑使用批量查询。
例如,运行相同的全文查询多次,但使用不同的排序或分组设置,这将使searchd运行昂贵的昂贵的全文检索和相关的计算,然后生成基于多组结果。
有时,您不仅需要简单地显示搜索结果,还需要显示与类相关的一些计数信息,例如,由制造商分组的产品数量。在这个时候,批量查询可以节省大量费用。如果没有批量查询,你要运行这些基本相同的查询多次检索相同的匹配项,最后产生不同的结果。如果你使用批量查询,你只需要把这些疑问只是一个批量查询,和狮身人面像优化冗余全文本搜索内部。
addquery()存储所有当前的设置和查询里面,你可以改变在随后的addquery设置()调用,增加了早会不会影响查询,但其实是没有办法改变他们。
在上面的代码中,第一个查询将查询你好世界上文件的索引结果根据相关排名,第二查询将查询的iPod的产品指标和结果按照价格排序的搜索结果,哈利·波特书中的指标第三的查询,还是价格序。注第二setsortmode()调用不影响第一查询(因为它已添加),但接下来的两个查询的影响。
此外,任何滤波器组在AddQuery()将继续由后续查询使用。因此,如果setfilter()前使用第一个查询,第二查询执行通过addquery(以及随后的批量查询)将采用相同的滤波的除非你先打电话resetfilters()清除过滤规则。在同时,你还可以随时添加新的过滤规则
addquery()不修改当前的状态。也就是说,所有现有的排序、过滤和分组设置不是由于这个电话改变了,所以后面的查询可以很容易地重用现有的设置。
addquery()返回的runqueries返回结果数组下标()。它是一个渐进的整数,从0开始,即第一个调用返回0,第二返回1,等等。这种方便的功能,使你不必手动记录当你需要这些下标。
>