sphinx的联合查询(sphinx配置篇)

下面举例说明,sphinx的联合查询用法。

一,添加二张测试表和数据

1,users表和数据

  1. mysql> desc users;
  2. +----------+-------------+------+-----+---------+----------------+
  3. | Field | Type | Null | Key | Default | Extra |
  4. +----------+-------------+------+-----+---------+----------------+
  5. | user_id | int(11) | NO | PRI | NULL | auto_increment |
  6. | username | varchar(20) | NO | | NULL | |
  7. +----------+-------------+------+-----+---------+----------------+
  8. 2 rows in set (0.00 sec)
  9. mysql> select * from users;
  10. +------------+------------+
  11. | user_id | username |
  12. +------------+------------+
  13. | 1311895262 | 张三 |
  14. | 1311895263 | tank张二 |
  15. | 1311895264 | tank张一 |
  16. | 1311895265 | tank张 |
  17. +------------+------------+
  18. 4 rows in set (0.00 sec)

 2,orders表和数据

  1. mysql> desc orders;
  2. +--------------+-------------+------+-----+---------+----------------+
  3. | Field | Type | Null | Key | Default | Extra |
  4. +--------------+-------------+------+-----+---------+----------------+
  5. | id | int(11) | NO | PRI | NULL | auto_increment |
  6. | user_id | int(11) | NO | | NULL | |
  7. | create_time | datetime | NO | | NULL | |
  8. | product_name | varchar(20) | NO | | NULL | |
  9. | summary | text | NO | | NULL | |
  10. +--------------+-------------+------+-----+---------+----------------+
  11. 5 rows in set (0.00 sec)
  12. mysql> select * from orders;
  13. +----+------------+---------------------+----------------+--------------+
  14. | id | user_id | create_time | product_name | summary |
  15. +----+------------+---------------------+----------------+--------------+
  16. | 9 | 1311895262 | 2014-08-01 00:24:54 | tank is 坦克 | 技术总监 |
  17. | 10 | 1311895263 | 2014-08-01 00:24:54 | tank is 坦克 | 技术经理 |
  18. | 11 | 1311895264 | 2014-08-01 00:24:54 | tank is 坦克 | DNB经理 |
  19. | 12 | 1311895265 | 2014-08-01 00:24:54 | tank is 坦克 | 运维总监 |
  20. +----+------------+---------------------+----------------+--------------+
  21. 4 rows in set (0.00 sec)

二,配置sphinx.conf

查看复制打印?

  1. source order
  2. {
  3. type = mysql
  4. sql_host = localhost
  5. sql_user = root
  6. sql_pass =
  7. sql_db = test
  8. sql_query_pre = SET NAMES utf8
  9. sql_query = \
  10. SELECT a.id, a.user_id,b.username, UNIX_TIMESTAMP(a.create_time) AS create_time, a.product_name, a.summary \
  11. FROM orders a left join users b on a.user_id = b.user_id
  12. sql_attr_uint = user_id
  13. sql_field_string = username
  14. sql_field_string = product_name
  15. sql_attr_timestamp = create_time
  16. sql_ranged_throttle = 0
  17. sql_query_info = SELECT * FROM orders WHERE id=$id
  18. }
  19. index myorder
  20. {
  21. source = order
  22. path = /usr/local/sphinx/var/data/myorder
  23. docinfo = extern
  24. mlock = 0
  25. morphology = none
  26. min_word_len = 1
  27. charset_dictpath = /usr/local/mmseg3/etc/
  28. charset_type = zh_cn.utf-8
  29. ngram_len = 0
  30. html_strip = 0
  31. }

注意:在这里a.user_id = b.user_id,等号二边一定要有空格,不然就会报错。

三,重启sphinx

  1. # pkill searchd
  2. # /usr/local/sphinx/bin/indexer --config /usr/local/sphinx/etc/sphinx.conf --all
  3. # /usr/local/sphinx/bin/searchd --config /usr/local/sphinx/etc/sphinx.conf

四,测试sphinx

查看复制打印?

  1. [[email protected] etc]# mysql -h 127.0.0.1 -P 9306                     //登录sphinx,9306端口,不是真实的mysql
  2. Welcome to the MySQL monitor. Commands end with ; or \g.
  3. Your MySQL connection id is 1
  4. Server version: 1.11-id64-dev (r2540)
  5. Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
  6. Oracle is a registered trademark of Oracle Corporation and/or its
  7. affiliates. Other names may be trademarks of their respective
  8. owners.
  9. Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clear the current input statement.
  10. mysql> select * from myorder where match(‘张‘);
  11. +------+--------+------------+------------+-------------+----------------+
  12. | id | weight | user_id | username | create_time | product_name |
  13. +------+--------+------------+------------+-------------+----------------+
  14. | 9 | 1304 | 1311895262 | 张三 | 1406823894 | tank is 坦克 |
  15. | 10 | 1304 | 1311895263 | tank张二 | 1406823894 | tank is 坦克 |
  16. | 11 | 1304 | 1311895264 | tank张一 | 1406823894 | tank is 坦克 |
  17. | 12 | 1304 | 1311895265 | tank张 | 1406823894 | tank is 坦克 |
  18. +------+--------+------------+------------+-------------+----------------+
  19. 4 rows in set (0.01 sec)
  20. mysql> select * from myorder where match(‘张三‘);
  21. +------+--------+------------+----------+-------------+----------------+
  22. | id | weight | user_id | username | create_time | product_name |
  23. +------+--------+------------+----------+-------------+----------------+
  24. | 9 | 2500 | 1311895262 | 张三 | 1406823894 | tank is 坦克 |
  25. +------+--------+------------+----------+-------------+----------------+
  26. 1 row in set (0.00 sec)
时间: 2024-10-18 15:48:12

sphinx的联合查询(sphinx配置篇)的相关文章

sphinx教程 区段查询配置 命令(2)

首先查看配置文件 sphinx.conf 区段查询配置: # in sphinx.conf sql_query_range = SELECT MIN(id),MAX(id) FROM documents sql_range_step = 1000 sql_query = SELECT * FROM documents WHERE id>=$start AND id<=$end 如果这个表中,字段ID的最小值和最大值分别是1和2345,则sql_query将执行3次: 将 $start 替换为1

sphinx 全文搜索引擎安装与配置

sphinx 全文搜索引擎 sphinx的安装与配置 --------------------------------------------------------------------------------------------- SQL   结构化查询语言(是一种标准,所有的关系型数据库Mysql,sqlserver,oracle) sphinx的使用两种方式: 第一种:  使用sphinx的API来操作sphinx   (常用)        sphinx可以使用API类,也可以将

MyBatis 多表联合查询及优化

序 这篇文章我打算来简单的谈谈 mybatis 的多表联合查询.起初是觉得挺简单的,没必要拿出来写,毕竟 mybatis 这东西现在是个开发的都会用,而且网上的文章也是一搜罗一大堆,根本就用不着我来重复.但是吧,就我前几天在做一个多表联合查询的时候,竟然出了很多意想不到的问题,而且这些问题的出现,并不是对 mybatis 不了解,而是在用的过程中会或多或少的忽略一些东西,导致提示各种错误. 背景 老规矩,开始之前,还是要先说说这件事的背景.也就是最近几天,公司要做一个后台的管理平台,由于之前的一

cisco(思科)交换机配置篇【二】

上一篇给大家讲到了cisco交换机的基本操作命令,趁端午节放假前,把cisco交换机的简单配置分享一下并预祝一下各位"端午节快乐"!Ok,要进行交换机的配置,首先就得进入交换机的全局配置模式,在成功连接交换机并且登陆成功进入特权模式下 1.输入进入全局配置模式: switch#configure terminal Enter configuration commands, one per line. End with CNTL/Z. switch(config)# switch(con

MyBatis 多表联合查询及优化 以及自定义返回结果集

下面就来说一下 mybatis 是通过什么来实现多表联合查询的.首先看一下表关系,如图: 这 里,我已经搭好了开发的环境,用到的是 SpringMVC + Spring + MyBatis,当然,为了简单期间,你可以不用搭前端的框架,只使用 Spring + MyBatis 就可以,外加 junit 测试即可.环境我就不带大家搭了,这里只说涉及到联合查询的操作. 设计好表之后,我用到了 mybatis 的自动生成工具 mybatis generator 生成的实体类.mapper 接口.以及 m

MyBatis之三:多表联合查询

在这篇文章里面主要讲解如何在mybatis里面使用一对一.一对多.多表联合查询(类似视图)操作的例子. 注:阅读本文前请先大概看一下之前两篇文章. 一.表结构 班级表class,学生表student,班级学生关系表ClassStudent. 这里一个学生只会在一个班级里面,也就是一对一的关系:一个班级有多个学生,也就是一对多的关系. 结构如下: CREATE TABLE [dbo].[Class]( [class_id] [int] NOT NULL, [class_name] [varchar

Mysql数据库优化技术之配置篇、索引篇 ( 必看 必看 转)

转自:Mysql数据库优化技术之配置篇.索引篇 ( 必看 必看 ) (一)减少数据库访问 对于可以静态化的页面,尽可能静态化 对一个动态页面中可以静态的局部,采用静态化 部分数据可以生成XML,或者文本文件形式保存 使用数据缓存技术,例如: MemCached (二)优化的检测方法 1.用户体验检测 2.Mysql状态检测 在Mysql命令行里面使用show status命令,得到当前mysql状态. 主要关注下列属性: key_read_requests (索引读的请求数)(key_buffe

在db2中 两个数据库之间的两个表的联合查询

大家好,今天遇到了在db2中 两个数据库之间的两个表的联合查询我知道oracle中有dblink,可是不知到db2的两个数据库联合查询怎么处理我找了类似于比如两个数据库: db1,db2用户名密码select * from db1.用户名.密码,db2.用户名.密码 where db1.NM=db2.NM可是这样不好用啊请各位帮忙谢谢 DB2有联邦数据库的,你可以查一下. 1.要看目录数据库请用:db2 list db directory这些信息应该是放系统表中.(既不是什么注册表.也不是什么文

coreseek(sphinx+mmseg3),php下sphinx扩展安装和php示例

搭建coreseek(sphinx+mmseg3)安装 [第一步] 先安装mmseg3 1 cd /root/install 2 wget http://www.coreseek.cn/uploads/csft/4.0/coreseek-4.1-beta.tar.gz 3 tar zxvf coreseek-4.1-beta.tar.gz 4 5 cd coreseek-4.1-beta 6 cd mmseg-3.2.14 7 ./bootstrap 8 ./configure --prefix