• sphinx匹配指定字段


    为了缓解数据库的查询压力,把指定表的数据做成了sphinx索引,由于要查询的字段和别的字段值会有重复的,接下来吾爱编程为大家介绍一下sphinx精准查询的方法,有需要的小伙伴可以参考一下:

    1、需求:
    数据库中有一张表的数据已经200万条了,每次蜘蛛抓取的时候数据库的负载都会很高,sphinx常用来做搜索使用,而我需要做的是需要精准的去匹配到指定的内容,也就是把查询数据库的操作,转移到使用sphinx上面来进行操作。

    由于数据表的ID和url字段的值会有重复的,所以想要做到精准查询显示结果,这里我们需要指定字段。
    
    • 1

    2、解决方法:
    (1)、设置搜索模式:

    $sphinx->SetMatchMode(SPH_MATCH_EXTENDED2);
    
    • 1
    (2)、设置指定的搜索字段:
    
    • 1
    $res_index = $sphinx->Query('@url ' . $url, 'itbiancheng');  //itbiancheng是我的索引,这里需要根据实际情况替换成自己的
    
    • 1

    3、验证结果:

    [total] => 1
    [total_found] => 1
    [time] => 0.000
    [words] => Array
    	(
    	    [42891] => Array
    		(
    		    [docs] => 2
    		    [hits] => 2
    		)
    	)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    这里虽然显示了命中的有两个,但是根据上面的我们设置的条件,结果中只会显示一条
    
    • 1

    4、SetMatchMode可选匹配模式:

    ConstantDescription
    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的条件语句
  • 相关阅读:
    【计算机组成原理】将十进制数20.59375,转换成754标准的32位浮点数的二进制存储格式
    基于Monkey的稳定性测试
    Flutter入门-Flutter配置
    【牛客网题目】Java字符串专项
    瑞萨e2studio(29)----SPI速率解析
    Matlab信号处理3:fft(快速傅里叶变换)标准使用方式
    Golang标准包time总结
    设计模式-外观模式(Facade)
    基于ZYNQ的PCIE高速数据采集卡的设计(三)硬件设计
    SLA 、SLO & SLI
  • 原文地址:https://blog.csdn.net/chendongpu/article/details/126143328