作者:佚名 时间:2024-01-14 12:02:52 阅读:(14)
为了缓解数据库的查询导致服务器负载过高的压力,只好把指定表的数据做成了sphinx索引,由于要查询的字段和别的字段值会有重复的,接下来云梦编程为大家介绍一下sphinx精准查询的方法,有需要的小伙伴可以参考一下:
网站数据库中数据已经达到了一千万条了,这就导致了每次蜘蛛抓取的时候服务器负载很高,而sphinx常用来做搜索使用来减少数据库查询的压力,需要做的是需要精准的去匹配到指定的内容,也就是把查询数据库的操作,转移到使用sphinx上面来进行操作。
由于数据表的ID和url字段的值会有重复的,所以想要做到精准查询显示结果,这里我们需要指定字段。
(1)、设置搜索模式:
$sphinx->SetMatchMode(SPH_MATCH_EXTENDED2);
(2)、设置指定的搜索字段:
$res_index = $sphinx->Query('@url ' . $url, 'yundreams'); //yundreams是我的索引,这里需要根据实际情况替换成自己的
[total] => 1 [total_found] => 1 [time] => 0.000 [words] => Array ( [42891] => Array ( [docs] => 2 [hits] => 2 ) )
这里虽然显示了命中的有两个,但是根据上面的我们设置的条件,结果中只会显示一条
Constant | Description |
---|---|
SPH_MATCH_ALL | 匹配所有查询词(默认模式). |
SPH_MATCH_ANY | 匹配查询词中的任意一个. |
SPH_MATCH_PHRASE | 将整个查询看作一个词组,要求按顺序完整匹配. |
SPH_MATCH_BOOLEAN | 将查询看作一个布尔表达式. |
SPH_MATCH_EXTENDED | 将查询看作一个Sphinx内部查询语言的表达式. |
SPH_MATCH_FULLSCAN | 使用完全扫描,忽略查询词汇. |
SPH_MATCH_EXTENDED2 |
类似 SPH_MATCH_EXTENDED ,并支持评分和权重,扩展匹配模式允许使用一些像mysql的条件语句
|
以上就是云梦编程为大家介绍的关于sphinx精准查询方法的全部内容了,了解更多相关文章请关注云梦编程网!