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的更多相关文章

  1. 利用sphinx为python项目生成API文档

    sphinx可以根据python的注释生成可以查找的api文档,简单记录了下步骤 1:安装 pip install -U Sphinx 2:在需要生成文档的.py文件目录下执行sphinx-apido ...

  2. 安装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 ...

  3. 【整理】Linux下中文检索引擎coreseek4安装,以及PHP使用sphinx的三种方式(sphinxapi,sphinx的php扩展,SphinxSe作为mysql存储引擎)

          一,软件准备 coreseek4.1 (包含coreseek测试版和mmseg最新版本,以及测试数据包[内置中文分词与搜索.单字切分.mysql数据源.python数据源.RT实时索引等测 ...

  4. coreseek+sphinx+mysql+thinkphp整合

    1.安装coreseek 1.1首先升级或安装系统依赖库 yum install make gcc g++ automake libtool mysql-client libmysqlclient15 ...

  5. 全文检索解决方案(lucene工具类以及sphinx相关资料)

    介绍两种全文检索的技术. 1.  lucene+ 中文分词(IK) 关于lucene的原理,在这里可以得到很好的学习. http://www.blogjava.net/zhyiwww/archive/ ...

  6. 如何将Sphinx生成的html文档集成进入Django

    参考 http://stackoverflow.com/questions/10594618/django-and-sphinx-how-to-view-the-html-sphinx-generat ...

  7. Linux下搭建coreseek(sphinx+mmseg3)全文检索

    测试平台:Center OS 1.设置环境,升级/安装系统基础依赖包:m4.autoconf.automake.libtool #设置路径和中文环境: $ export PATH=/usr/local ...

  8. 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 ...

  9. [搜索引擎]Sphinx的介绍和原理探索

    What/Sphinx是什么 定义 Sphinx是一个全文检索引擎. 特性 索引和性能优异 易于集成SQL和XML数据源,并可使用SphinxAPI.SphinxQL或者SphinxSE搜索接口 易于 ...

  10. Sphinx安装配置应用

    Sphinx 是由俄罗斯人Andrew Aksyonoff开发的一个全文搜索引擎.意图为其他应用提供高速.地空间占用.高结果相关度的全文搜索功能.Sphinx可以非常容易的与SQL数据库和脚本语言集成 ...

随机推荐

  1. C#中的Action<>和Func<>

    其实他们两个都是委托[代理]的简写形式. 一.[action<>]指定那些只有输入参数,没有返回值的委托 Delegate的代码: public delegate void myDeleg ...

  2. linux下安装Oracle时交换空间不足的解决方法

    摘:linux下安装Oracle时交换空间不足的解决方法 linux上安装Oracle时交换空间不足的解决办法 增加交换空间有两种方法: 严格的说,在系统安装完后只有一种方法可以增加swap,那就是本 ...

  3. Oracle同一个用户下启动多个数据库实例

     oracle@yingxiang-testServer1 oradata]$ export ORACLE_SID=APPDB[oracle@yingxiang-testServer1 oradata ...

  4. django template if return false

    如果if的参数不存在于context中就会返回false 参考:http://stackoverflow.com/questions/11107028/django-template-if-true- ...

  5. 聊聊Python中的生成器和迭代器

    Python中有两个重要的概念,生成器和迭代器,这里详细记录一下. 1. 生成器 什么是生成器呢? 通过列表生成式,我们可以直接创建一个列表.但是,受到内存限制,列表容量肯定是有限的.而且,创建一个包 ...

  6. Android 进程保活招式大全(转载)

    目前市面上的应用,貌似除了微信和手Q都会比较担心被用户或者系统(厂商)杀死问题.本文对 Android 进程拉活进行一个总结. Android 进程拉活包括两个层面: A. 提供进程优先级,降低进程被 ...

  7. Spring 源码学习:day1

    前言: 最近也不知道该忙些什么样的事情.便随便看看源码算了. 正文: (1) 在网上下载 Spring 的源码: 可以采用 git 方式下载 https://github.com/spring-pro ...

  8. 关于tomcat的session问题

    因为有需要每一个项目有独立端口,并且能够单独启动和关闭,所以在一台服务器上配置了多个tomcat.tomcat是完全一样的,只是各自的端口不一致. 现在的问题是单独启动一个tomcat完全没有问题. ...

  9. 【GIS】无人机影像数据关系换算(转)

    ----------------------------------------------------------------------------------------------- H=f× ...

  10. Android进阶:ListView性能优化异步加载图片 使滑动效果流畅

    ListView 是一种可以显示一系列项目并能进行滚动显示的 View,每一行的Item可能包含复杂的结构,可能会从网络上获取icon等的一些图标信息,就现在的网络速度要想保持ListView运行的很 ...