博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
sphinx 使用
阅读量:6229 次
发布时间:2019-06-21

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

sphinx 使用

1、使用规范

setServer($sphinxHost, $port);$s->setArrayResult(true);$s->setMatchMode(SPH_MATCH_ANY); //SPH_MATCH_ANY SPH_MATCH_EXTENDED2$s->SetRankingMode(SPH_RANK_MATCHANY);$s->setMaxQueryTime(30);$s->SetLimits(($page - 1) * $pageSize, $pageSize,$maxSize);$res = $s->query($row['multi_name'], $source);复制代码

2、主要方法和注意事项

①setMatchMode //匹配模式

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 ,并支持评分和权重.复制代码

②setRankingMode //排序模式

SPH_RANK_PROXIMITY  设置评分模式SPH_RANK_PROXIMITY_BM25  默认,基于评分和 BM25 两个因素SPH_RANK_MATCHANY    和SPH_MATCH_ANY 相对应复制代码

③setFilter(fieldName, array(value1,value2,...)); //设置过滤字段字

④SetFieldWeights //设置字段权重

$s->SetFieldWeights (array('industry'=>1,'area'=>2));//设置字段的权重,如果area命中,那么权重算2复制代码

⑤setSortMode //设置排序

SPH_SORT_RELEVANCE 模式, 按相关度降序排列(最好的匹配排在最前面)SPH_SORT_ATTR_DESC 模式, 按属性降序排列 (属性值越大的越是排在前面)SPH_SORT_ATTR_ASC 模式, 按属性升序排列(属性值越小的越是排在前面)SPH_SORT_TIME_SEGMENTS 模式, 先按时间段(最近一小时/天/周/月)降序,再按相关度降序SPH_SORT_EXTENDED 模式, 按一种类似SQL的方式将列组合起来,升序或降序排列。SPH_SORT_EXPR 模式,按某个算术表达式排序。复制代码

⑥SetLimits //设置分页

$s->SetLimits(($page - 1) * $pageSize, $pageSize,$maxSize); //$maxSize 不能超过max_matches复制代码

3、按照字段命中计算权重 排序

$s->SetRankingMode ( SPH_RANK_PROXIMITY );//设置评分模式$s->SetMatchMode ( SPH_MATCH_EXTENDED );//设置模式$s->SetRankingMode ( SPH_RANK_PROXIMITY );//设置评分模式$s->SetFieldWeights (array('industry'=>1,'area'=>2,'expr'=>2));//设置字段的权重,如果area命中,那么权重算2$s->SetSortMode ('SPH_SORT_EXPR','@weight');//按照权重排序复制代码

4、配置项说明

source question{        type                    = mysql        sql_host                = 10.10.1.150            sql_user                = dev_dba        sql_pass                =db_pass        sql_db                  = db_name        sql_port                = 3306  # optional, default is 3306        sql_query_pre           = SET NAMES utf8        sql_query               = \                SELECT * FROM t_wenda_question order by add_time desc        sql_field_string        = title   #设置字段属性}#impressionSuite   继承question公共配置source impressionSuite : question{    sql_query       = \        SELECT id,title FROM t_impression_suite where state=4 order by id desc        sql_attr_uint = id        sql_query_info          = SELECT * FROM t_impression_suite WHERE id=$id  }index question{    source          = question    path            = /usr/local/coreseek-4.1/var/data/question    docinfo         = extern    charset_dictpath                        = /usr/local/mmseg_3.2.14/etc        charset_type                            = zh_cn.utf-8        ngram_len                               = 0}#impressionSuite   继承question公共配置index impressionSuite : question{    source                  = impressionSuite    path                    = /usr/local/coreseek-4.1/var/data/impressionSuite }复制代码

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

你可能感兴趣的文章
实践:GNU构建系统
查看>>
扩展spring schema文件
查看>>
经典汉诺塔问题
查看>>
html5整理(一)
查看>>
spring-cloud-config的encrypt功能
查看>>
javascript引用类型之Date
查看>>
Fiddler调试(适合修复线上bug和直接调试线上问题)
查看>>
Vue+WebSocket+ES6+Canvas 制作【你画我猜】小游戏
查看>>
Java反射的封装
查看>>
精益 React 学习指南 (Lean React)- 1.1 React 介绍
查看>>
基于Flink的标准SQL操作支持
查看>>
用纯Javascript实现React Native的文件上传
查看>>
通信协议设计要点
查看>>
结构体中的 Lazy 属性探究
查看>>
iOS,Android网络抓包教程之tcpdump
查看>>
听飞狐聊JavaScript设计模式系列01
查看>>
CUBA Studio 8.2 发布,企业级应用开发平台
查看>>
玩转 React 服务器端渲染
查看>>
druid配置数据库连接使用密文密码
查看>>
手把手教你如何新建scrapy爬虫框架的第一个项目(下) ...
查看>>