博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
sphinx 笔记(不定期更新)
阅读量:5795 次
发布时间:2019-06-18

本文共 1922 字,大约阅读时间需要 6 分钟。

扩展语法

在sphinx的请求语法中, 有一种proximity distance的方式: 如下

"yes no"~2

在其文档中的解释为

Proximity distance is specified in words, adjusted for word count, and

applies to all words within quotes
我的理解是匹配出引号内字符之间长度在指定数值范围内的文档。 当然, 如果引号内的字符数量大于后面的数值, 那这个数值也就变得没意义了

比如上面的, yes和no之间的字符长度不能高于2,如果是三个字符

"yes no hello"~6    表示能匹配到的字符中包含着三个字符之间的最大长度不能超过6个。    如果文档是中的字符为: "yes hello world you are great man no"是可以匹配到, 因为最大长度是在yes和no之间, 且长度不大于6;    而如果文档中的字符为: "yes hello world you are great man really no"是不会被匹配到的,因为yes和no之间的长度大于6了

另一种Quorum matching operator,也是用于模糊匹配

"hello world"/0.7

前面的引号中的是要查找过滤的关键字,后面的0.7表示要匹配到的文档至少包含引号中的字符串的百分比(也可以是整数,表示要匹配到文档包含引号中的字符串的数量),比如这里的0.7,关键字是两个,所以匹配出来的文档中至少要包含1.4个引号中的字符,1.4是小数,取整应该是2个,所以要求文档中至少有两个引号中的字符。

更正: 当以百分比的形式查找符合的文档时,要符合四舍五入的原则,比如上面的0.7,如果前面的引号内是2个,则2 x 0.7 = 1.4, 四舍,即只要命中一个字符即认为匹配,如果前面有5个字符,5 x 0.7 = 3.5, 五入, 即至少要命中4个才行

假如你要查找的关键字有4个,希望查找到至少包含其中的3个字符的时候,可以用0.75~~0.87这个段的百分比

更正

Proximity distance is specified in words, adjusted for word count, and

applies to all words within quotes
这里的理解应该是匹配出引号内字符中被插入的字符数量小于指定范围的文档,即使引号内字符数量大于后面的数值也是有意义的。

比如上面的, yes和no之间的字符长度不能高于2,如果是三个字符

"yes no hello"~6    表示能匹配到的字符中包含着三个字符之间的最大长度小于9个,即最长距离的的两个字符(yes,no或者hello)中间,不能插入超过6个的字符。    如果文档是中的字符为: "yes hello world you are great man no"是可以匹配到, 因为最大长度是在yes和no之间, 且被插入的字符只有5个(不包括原有字符(hello));    而如果文档中的字符为: "yes hello world you are great man really no"是不会被匹配到的,因为yes和no之间被插入的字符长度大于等于5个了

mysql 方式

sphinx 可以像mysql一样去执行索引查询。

  1. 连接数据库

mysql -h0 -P9306

这里的-h表示的是sphinx服务所在的主机ip, 0即表示当前主机, -P(大写)表示sphinx服务的端口,这个端口是sphinx的mysql协议支持的端口,配置项seardchd, 配置行是:

listen = localhost:9306:mysql41

这样就可以像mysql一样查询数据了

例如:

select * from tags where match('@title "hello world"/0.5');

请注意: 这种方式查询结果默认只会显示20个,之后再执行

show meta;

就会显示这次查询相关的几个参数, 比如总共查找到的个数, 消耗的时间, 等等

如果想显示更多的结果, 像mysql一样 limit 就好了

我这里再说明一下上面查询中的match语法中的参数含义

@title 是期待使用title属性过滤(这个要在sphinx的索引配置中指定sql_field_string);

后面跟着的请看上面的Quorum matching operator

这个其实可以放到上面的扩展语法里,暂时写在这里

转载地址:http://hebfx.baihongyu.com/

你可能感兴趣的文章
java springcloud版b2b2c社交电商spring cloud分布式微服务(十五)Springboot整合RabbitMQ...
查看>>
SpringCloud使用Prometheus监控(基于Eureka)
查看>>
10g手动创建数据库
查看>>
运用Loadrunner测试Mysql数据库性能
查看>>
Spring MVC EL表达式不能显示
查看>>
【致青春】我们挥霍时间的年代
查看>>
Windwos Server 2008 R2 DHCP服务
查看>>
SAS和SATA硬盘的区别
查看>>
现代程序设计 学生情况调查
查看>>
U盘安装linux后无法引导
查看>>
C# 矩阵作业
查看>>
俺的新书《Sencha Touch实战》终于出版了
查看>>
关于数据库查询时报“query block has incorrect number of result columns”
查看>>
li下的ul----多级列表
查看>>
UVa 11292 勇者斗恶龙(The Dragon of Loowater)
查看>>
区域生长算法
查看>>
switch语句小练习
查看>>
组合逻辑电路
查看>>
POP-一个点击带有放大还原的动画效果
查看>>
UE4材质是什么样的机制
查看>>