sphinx全文检索之PHP使用教程-电脑培训学校,株洲it培训,php工程师 无法在这个位置找到: "head.htm"
新闻资讯
您所在的位置:首页 / 新闻资讯 / 公牛新闻

电脑培训学校新闻

sphinx全文检索之PHP使用教程

时间2018-03-15 16:26  来源:未知  点击数:  作者:电脑培训学校

     

  首先打开控制台,必须打开控制台PHP才能连接到sphinx(确保你已经建立好索引源):

  你可能奇怪为什么没有邮件的内容这些信息,其实sphinx并不会返回像mysql那样的数据数组,因为sphinx本来就没有记录完整的数据,只记录被分词后的数据。

  具体还要看matches数组,matches中的ID就是指配置文件中sql_querySELECT语句中的第一个字段,我们配置文件中是这样的

  至于weight是指匹配的权重,一般权重越高被返回的优先度也最高,匹配权重相关内容请参考官方文档

  attrs是配置文件中sql_attr_中的信息,稍后会提到这些属性的用法

  说了这么多,即使搜索到结果也不是我们想要的email数据,但事实sphinx是不记录真实数据的,所以要获取到真实email数据还要根据matches中的ID去搜索mysql的email表,但总体来说这样一来一回的速度还是远远比mysql的LIKE快得多,前提是几十万数据量以上,否则用sphinx只会更慢。

  SPH_SORT_RELEVANCE模式,按相关度降序排列(最好的匹配排在最前面)

  SPH_SORT_ATTR_DESC模式,按属性降序排列(属性值越大的越是排在前面)

  SPH_SORT_ATTR_ASC模式,按属性升序排列(属性值越小的越是排在前面)

  SPH_SORT_TIME_SEGMENTS模式,先按时间段(最近一小时/天/周/月)降序,再按相关度降序

  SPH_SORT_EXTENDED模式,按一种类似SQL的方式将列组合起来,升序或降序排列。

  SPH_MATCH_PHRASE,将整个查询看作一个词组,要求按顺序完整匹配;

  SPH_MATCH_FULLSCAN,强制使用下文所述的“完整扫描”模式来对查询进行匹配。注意,在此模式下,所有的查询词都被忽略,尽管过滤器、过滤器范围以及分组仍然起作用,但任何文本匹配都不会发生.

  我们要关注的主要是SPH_MATCH_EXTENDED2扩展匹配模式,扩展匹配模式允许使用一些像mysql的条件语句

  扩展匹配模式中值得一提的是搜索的字段,如果该字段被设置属性,那么扩展匹配搜索的字段默认是不包含这些属性的,只能用SetFilter()或者SetFilterRange()之类

  之前我们设置了fromid、toid、sendtime为属性,但又想在扩展匹配模式中又想用作条件该怎么办?

  假如我想邮件的发送时间大于某一日期怎么办?用SetFilterRange()方法模拟一下

  怎样搜索为空的字段,比如我要搜索附件为空的邮件,有人可能会想@attachment()不就可以了吗?其实这是搜索两个单引号。。。sphinx搜索的字符串不用加引号的

  目前sphinx是没有提供这样的功能,其实可以在mysql语句上作手脚:

  搜索包含某一附件的邮件,mysql习惯用FIND_IN_SET这么简单一句就搞定了,在sphinx中必需在配置里设置属性sql_attr_multi多值属性(MVA):

  如果你想一个免费、好用、极速的全文搜索引擎,sphinx无疑是最好的选择,但是不要忘记sphinx的目的:全文检索。不要去想那些乱七八糟条件。你想要把sphinx搜索变得像mysql那样灵活,可完全单独用在一些复杂的多条件搜索,像某些邮件的高级搜索,那么我建议你还是多花点时间在PHP或者mysql代码的优化上,因为那样可能会让你的搜索变得更慢。


友情链接:
  • 广州电脑维修
  • 国际学校
  • 梅州淘屋网
  • 硅酸盐防爆泄压板
  • 滨州搜房网
  • 壹诺网站优化
  • 网站地图 ©电脑培训学校,株洲it培训,php工程师