php之sphinx
1、修改sphinx配置文件?
source 数据源名称
{
type = mysql ######数据源类型
sql_host = #######数据库主机地址(如果是外网,请确保防火墙允许链接)
sql_user = root ####数据库用户名称
sql_pass = #######数据库密码
sql_db = #####数据库名称
sql_port = ######数据库服务器端口号
sql_query_pre = 执行SQL前设置的编码(SET NAMES utf8)
sql_query = 全文检索要显示的内容,据官方说法:尽可能不要使用where 或者groupby,将其交给sphinx效率会更高;
select出来的字段必须包含至少一个唯一主键,以及全文检索的字段sphinx会对select中的字段1,字段2建立sphinx自己的索引,以及在查询
的字段中查找键字,
###如果使用Unix sock连接可以使用这个
sql_sock = /tmp/mysql.sock
##indexer和mysql之间的交互,需要考虑到效率和安全性。
###比如考虑到效率,他们两者之间的交互需要使用压缩协议;考虑到安全,他们两者之间的传输需要使用ssl
###那么这个参数就代表这个意思,0/32/2048/32768 无/使用压缩协议/握手后切换到ssl/Mysql 4.1版本身份认证。
##mysql_connect_flags = 32
##当mysql_connect_flags设置2048(ssl)的时候,下面几个就代表所需要使用的几个参数。
#mysql_ssl_cert = /etc/ssl/client-cert.pem
#mysql_ssl_key = /etc/client-eky.pem
#mysql_ssl_ca = /etc/ssl/cacert.pem
###mssql特有,是否使用windows登录
#mssql_winauth = 1
####mssql特有,是使用Unicode还是单字节数据。
#mssql_unicode = 1 #request Unicode data from server
###odbc的dsn串
#odbc_dsn =
###SQL某一列的缓冲大小,一般是针对字符串来说的。
###为什么要有这么一种缓冲呢?
#有的字符串,虽然长度很长,但是实际上并没有使用那么长的字符,所以在SPhinx并不会收录所有的字符,而是给每个属性一个缓存作为长度限制。
##默认情况下非字符类型的属性是1KB,字符类型的属性是1MB。
###而如果想要配置这个buffer的话,就可以在这里进行配置了。
###sql_column_buffers = content=12M, comments=1M
##indexer的SQL执行语句
sql_query = \
SELECT id, group_id, UNIX_TIMESTAMP(date_added) AS date_added, title, content \
FROM documents
###有的时候有多个表,我们想要查询的字符在其他表中,这个时候要对sql_query进行join操作。
#而这个join操作可能非常慢,导致建立索引的时候特别慢,那么这个时候,就可以考虑sphinx端进行join操作了。
##sql_joined_field是增加一个字段,这个字段是从其他查询中查询出来的。
#这里封号后面的查询语句是有要求的,如果是query,则返回id和查询字段,如果是payload-query,则返回id,查询字段和权重。
###并且这里的后一个查询要按照id进行升序排序。
#sql_join_field = tags from query; select docid,concat('tag', tagid) from tags order by docid asc;
# sql_joined_field = wtags from payload-query; SELECT docid, tag, tagweight FROM tags ORDER BY docid ASC
##外部文件字段,意思就是一个表中,有一个字段存的是外部文件地址,但是实际的字段内容在文件中。比如这个字段叫做content_file_path.
##当indexer建立索引的时候,查到这个字段,就读取这个文件地址,然后加载,并进行分词和所以建立等操作。
# sql_file_field = content_file_path
##当数据源数据太大的时候,一个语句查询下来往往很可能锁表操作。
###那么我们就可以使用多次查询,那么这个多次查询就需要有个范围和步长,sql_query_range和sql_range_step就是做这个使用的。
####而5次SQL查询每次的时间间隔时间是使用sql_ranged_rhrottle来进行设置的,单位是毫秒。
#sql_query_range = SELECT MIN(id), MAX(id) FROM documents
#sql_range_step = 1000
#sql_ranged_throttle = 0
###下面就是些不同属性的数据了
###先要了解属性的概念,属性是存在索引中的,他不进行全文索引,但是可以用于过滤和排序,
###uint 无符号整型属性
sql_attr_uint = group_id
###bool属性
#sql_atttr_bool = is_deleted
##长整型属性
sql_attr_bigint = my_bigint_id
##时间戳属性吗,经常被用于排序
sql_attr_timestamp = date_added
###字符串排序属性,一般我们按照字符串排序的话,我们会将字符串存下来进入到索引中没然后在查询的时候比较索引中的字符大小进行排序。
####但是这个时候索引就会很大,于是我们就想到了一个方法,我们在建立的时候,先将字符串值从数据库中取出,暂存,排序。
#####然后给排序后的数组分配一个序号,然后建立索引的时候,就将这个序号引入到索引中去,这样在查询的时候也就能完成字符串排序的操作。
####这, 就是这个字段的意义。
#sql_attr_str2ordinal = author_name
##浮点数属性,经常在查询地理纬度的时候会用到。
#sql_attr_float = lat_dadians
@sql_attr_float = long_radians
###多值属性(MVA)
###试想一下,有一个文章系统,每篇文章都有多个标签,这个文章就叫多值属性。
#####我要对某个标签进行查询过滤,那么在建立查询的时候就应该把这个标签的值放入到索引中。
#这个字段,sql_attr_multi就是用来做这个事情的,
# sql_attr_multi = uint tag from query; SELECT docid, tagid FROM tags
# sql_attr_multi = uint tag from ranged-query; \
# SELECT docid, tagid FROM tags WHERE id>=$start AND id<=$end; \
# SELECT MIN(docid), MAX(docid) FROM tags
#字符串属性,
#sql_attr_string = stitle
## 文档词汇数记录属性。比如下面就是在索引建立的时候增加一个词汇数的字段
# sql_attr_str2wordcount = stitle
## 字符串字段,可全文搜索,可返回原始文本信息。
# sql_field_string = author
## 文档词汇数记录字段,可全文搜索,可返回原始信息
# sql_field_str2wordcount = title
## 取后查询,在sql_query执行后立即操作。
## 它和sql_query_post_index的区别就是执行时间不同
## sql_query_post是在sql_query执行后执行,而sql_query_post_index是在索引建立完成后才执行。
## 所以如果要记录最后索引执行时间,那么应该在sql_query_post_index中执行。
# sql_query_post =
## 参考sql_query_post的说明。
# sql_query_post_index = REPLACE INTO counters ( id, val ) \
# VALUES ( 'max_indexed_id', $maxid )
####命令行获取信息查询
###什么意思呢?
#我们进行索引一般只会返回组件id,而不会返回表中的所有字段。
###但是在调试的时候,我们一般需要返回表中的字段,那这个时候,就需要使用sql_query_info.
###同时这个字段只在控制台有效,在API中是无效的。
sql_query_info = SELECT * FROM documents where id = $id;
}
sphinx的source是有继承这么一种属性的,意思就是除了父source之外,这个source还有这个特性。
source src1throttled : src1
{
sql_ranged_throttle = 100
}
索引test1
index test1
{
##索引类型,包括有plain,distributed和rt。分别是普通索引/分布式索引/增量索引。默认是plain。
#type = plain
#索引数据源
source = src1
##索引文件存放路径
path = /home/yejianfeng/instance/coreseek/var/data/test1
####文档信息的存储模式,包括有none,extern,inline,默认是extern。
###docinfo 指的就是数据的所有属性(field)构成的一个集合。
#首先文档id是存储在一个文件中的(spa)
}
php之sphinx的更多相关文章
- 利用sphinx为python项目生成API文档
sphinx可以根据python的注释生成可以查找的api文档,简单记录了下步骤 1:安装 pip install -U Sphinx 2:在需要生成文档的.py文件目录下执行sphinx-apido ...
- 安装PHP sphinx扩展 sphinx-1.1.0/sphinx.c:105:2: error: too few arguments 错误
表现: /home/sphinx-1.1.0/sphinx.c: In function 'php_sphinx_client_read_property':/home/sphinx-1.1.0/sp ...
- 【整理】Linux下中文检索引擎coreseek4安装,以及PHP使用sphinx的三种方式(sphinxapi,sphinx的php扩展,SphinxSe作为mysql存储引擎)
一,软件准备 coreseek4.1 (包含coreseek测试版和mmseg最新版本,以及测试数据包[内置中文分词与搜索.单字切分.mysql数据源.python数据源.RT实时索引等测 ...
- coreseek+sphinx+mysql+thinkphp整合
1.安装coreseek 1.1首先升级或安装系统依赖库 yum install make gcc g++ automake libtool mysql-client libmysqlclient15 ...
- 全文检索解决方案(lucene工具类以及sphinx相关资料)
介绍两种全文检索的技术. 1. lucene+ 中文分词(IK) 关于lucene的原理,在这里可以得到很好的学习. http://www.blogjava.net/zhyiwww/archive/ ...
- 如何将Sphinx生成的html文档集成进入Django
参考 http://stackoverflow.com/questions/10594618/django-and-sphinx-how-to-view-the-html-sphinx-generat ...
- Linux下搭建coreseek(sphinx+mmseg3)全文检索
测试平台:Center OS 1.设置环境,升级/安装系统基础依赖包:m4.autoconf.automake.libtool #设置路径和中文环境: $ export PATH=/usr/local ...
- debian下使用Sphinx异常“Could not import extension sphinx.builders.linkcheck (exception: cannot import name SSLError)”的解决
最近使用到Sphinx编译文档,出现如下异常: Extension error:Could not import extension sphinx.builders.linkcheck (except ...
- [搜索引擎]Sphinx的介绍和原理探索
What/Sphinx是什么 定义 Sphinx是一个全文检索引擎. 特性 索引和性能优异 易于集成SQL和XML数据源,并可使用SphinxAPI.SphinxQL或者SphinxSE搜索接口 易于 ...
- Sphinx安装配置应用
Sphinx 是由俄罗斯人Andrew Aksyonoff开发的一个全文搜索引擎.意图为其他应用提供高速.地空间占用.高结果相关度的全文搜索功能.Sphinx可以非常容易的与SQL数据库和脚本语言集成 ...
随机推荐
- Windows Media Player 的文件格式支持情况
唔,官方文档:https://support.microsoft.com/zh-cn/help/316992/file-types-supported-by-windows-media-player ...
- Spring-boot(二)yml文件的使用
上一章创建了一个简单的springboot项目,配置可以说非常的简单. 不过,在实际开发中不可能都用默认的配置,还是需要根据自己的实际项目需求有自定义的配置的. 比如:端口号需要变更,模板引擎的缓存开 ...
- windows server r2 安装vs2017 更新补丁Windows8.1-KB2919355-x6
方法一: 点击vs2017安装包后提示需要更新Windows8.1-KB2919355-x64补丁 点击链接进入全部下载后查看官方安装顺序为 注意 必须按照以下顺序安装更新:clearcompress ...
- Linux下apache activemq的安装与配置
ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线.ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范 的 JMS Provider实现,尽管JMS规范出台已经是很 ...
- 图片相似原理--Java实现
前阵子在阮一峰的博客上看到了这篇<相似图片搜索原理>博客,就有一种冲动要将这些原理实现出来了. Google "相似图片搜索":你可以用一张图片,搜索互联网上所有与它相 ...
- Eclipse 中修改tomcat设置内存大小
修改1: 在Eclipse中下面Servers双击Tomcat Server... 然后点击General InformAtion 下的Open launch configuration: 会弹出Ed ...
- classifier in maven
http://maven.apache.org/plugins/maven-deploy-plugin/examples/deploying-with-classifiers.html Beside ...
- [PHP] 02 - Namespace & Class
两个比较大的话题,独立成本篇. 面向对象编程 一.命名空间 PHP 命名空间可以解决以下两类问题: 用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突. 为很长的标识符名称 ...
- HashMap,Hashtable,ConcurrentHashMap 和 synchronized Map 的原理和区别
HashMap 是否是线程安全的,如何在线程安全的前提下使用 HashMap,其实也就是HashMap,Hashtable,ConcurrentHashMap 和 synchronized Map 的 ...
- ValueError: {0} is not a valid coordinate or range问题解决
获取excel多列方法: >>> colC = ws['C'] >>> col_range = ws['C:D'] 采用python 实现时,开始列与结束列采用变量 ...