sphinx系列之sphinx安装和运行测试(二)

时间:2022-01-20 08:27:26

      在上一篇文章中说到安装mysql和sphinx的mysql引擎sphinxSE的安装,这一篇说的是sphinx的安装和运行测试,关于下载和解压缩sphinx都用上一篇文章里说的。

      进入到sphinx的源码文件夹里,运行下列命令就可以安装sphinx了:

ldconfig  / usr / local / mysql / lib / mysql
ldconfig 
/ usr / local / mysql / include / mysql
.
/ configure  -- prefix =/ usr / local / sphinx  -- with - mysql =/ usr / local / mysql
make 
&&  make install

      其中--prefix是指向sphinx的安装路径,--with-mysql是指向mysql的安装路径。如果上面都没有报错,那sphinx就成功安装了。

      sphinx的配置文件为sphinx.conf,下面进行配置:

cd  / usr / local / sphinx / etc
cp sphinx.conf.dist sphinx.conf
vim sphinx.conf

     进入/usr/local/sphinx/etc文件夹下,看到该文件夹下有下面这些文件:

- rw - r -- r --   1  root root    905   11 - 04   13 : 32  example.sql
- rw - r -- r --   1  root root  19003   11 - 04   13 : 32  sphinx.conf.dist
- rw - r -- r --   1  root root    948   11 - 04   13 : 32  sphinx - min.conf.dist

      把sphinx.conf.dist复制出来成sphinx.conf,并进入修改它的一些数据库的配置,主要是修改数据库地址,数据库用户、密码,还有数据库名这些,这里我们用安装mysql自带的test库进行测试。

      运行该目录下的example.sql脚本,把数据导到数据库中:

mysql  - u mysql  <   / usr / local / sphinx / etc / example.sql

      然后进入mysql中查看添加的数据:

mysql   # 进入mysql
show databases; #  查看到有下面这些库
mysql >  show databases;
+--------------------+
|  Database            |
+--------------------+
|  information_schema  |  
|  mysql               |  
|  test                |  
+--------------------+
3  rows  in  set ( 0.00  sec)

#进入test库,查看到有下面这些表,其中documents表是自动导进来的:
mysql
>  use test
Database changed
mysql
>  show tables;
+----------------+
|  Tables_in_test  |
+----------------+
|  documents       |  
|  eht_articles    |  
|  tags            |  
+----------------+
3  rows  in  set ( 0.01  sec)

查询documents表就能看到下面记录:
mysql
>  SELECT  *  FROM documents;
+----+----------+-----------+---------------------+-----------------+---------------------------------------------------------------------------+
|  id  |  group_id  |  group_id2  |  date_added           |  title            |  content                                                                    |
+----+----------+-----------+---------------------+-----------------+---------------------------------------------------------------------------+
|    1   |          1   |           5   |   2010 - 11 - 04   19 : 22 : 13   |  test one         |  this  is  my test document number one. also checking search within phrases.  |  
|    2   |          1   |           6   |   2010 - 11 - 04   19 : 22 : 13   |  test two         |  this  is  my test document number two                                        |  
|    3   |          2   |           7   |   2010 - 11 - 04   19 : 22 : 13   |  another doc      |  this  is  another group                                                      |  
|    4   |          2   |           8   |   2010 - 11 - 04   19 : 22 : 13   |  doc number four  |  this  is  to test groups                                                     |  
+----+----------+-----------+---------------------+-----------------+---------------------------------------------------------------------------+
4  rows  in  set ( 0.00  sec)


      sphinx的配置文件也创建完了,数据也导进去了,接下来就用下面命令来创建索引:

/ usr / local / sphinx / bin / indexer

      创建索引是报了一个这样的错误:/usr/local/sphinx/bin/indexer: error while loading shared libraries: libmysqlclient.so.16: cannot open shared object file: No such file or directory,主要原因是在上一篇中安装完mysql后没有设置环境变量,可以用下面方法解决:

locate libmysqlclient     # 运行该命令找到关于libmysqlclient.so.16的文件
cp  / usr / local / mysql / lib / mysql / libmysqlclient.so. 16   / usr / lib / libmysqlclient.so. 16     #然后把该文件的一个连接复制到在环境变量的文件夹 / usr / lib /

     再次运行创建索引命令就能完成索引的创建了。

      然后用下面命令进行搜索测试:

/ usr / local / sphinx / bin / search test

      但此时报了一个search error: failed to open /usr/local/sphinx/var/data/test1.sph: No such file or directory.这样的错误,网上找了一下解决方法是在创建索引是加上--all参数,也就是:

/ usr / local / sphinx / bin / indexer  -- all

      --all参数官方文档的说明是:

--all tells indexer to update every index listed in sphinx.conf, instead of listing individual indexes. This would be useful in small configurations, or cron-type or maintenance jobs where the entire index set will get rebuilt each day, or week, or whatever period is best. Example usage

      重新创建索引后再次运行测试 /usr/local/sphinx/bin/search test 就会出现下列结果:

sphinx系列之sphinx安装和运行测试(二)sphinx系列之sphinx安装和运行测试(二)代码
Sphinx  0.9 . 9 - release (r2117)
Copyright (c) 
2001 - 2009 , Andrew Aksyonoff

using config file 
' /usr/local/sphinx/etc/sphinx.conf ' ...
index 
' test1 ' : query  ' test  ' : returned  3  matches of  3  total  in   0.001  sec

displaying matches:
1 . document = 1 , weight = 2 , group_id = 1 , date_added = Thu Nov   4   19 : 22 : 13   2010
        id
= 1
        group_id
= 1
        group_id2
= 5
        date_added
= 2010 - 11 - 04   19 : 22 : 13
        title
= test one
        content
= this  is  my test document number one. also checking search within phrases.
2 . document = 2 , weight = 2 , group_id = 1 , date_added = Thu Nov   4   19 : 22 : 13   2010
        id
= 2
        group_id
= 1
        group_id2
= 6
        date_added
= 2010 - 11 - 04   19 : 22 : 13
        title
= test two
        content
= this  is  my test document number two
3 . document = 4 , weight = 1 , group_id = 2 , date_added = Thu Nov   4   19 : 22 : 13   2010
        id
= 4
        group_id
= 2
        group_id2
= 8
        date_added
= 2010 - 11 - 04   19 : 22 : 13
        title
= doc number four
        content
= this  is  to test groups

words:
1 ' test ' 3  documents,  5  hits

index 
' test1stemmed ' : query  ' test  ' : returned  3  matches of  3  total  in   0.000  sec

displaying matches:
1 . document = 1 , weight = 2 , group_id = 1 , date_added = Thu Nov   4   19 : 22 : 13   2010
        id
= 1
        group_id
= 1
        group_id2
= 5
        date_added
= 2010 - 11 - 04   19 : 22 : 13
        title
= test one
        content
= this  is  my test document number one. also checking search within phrases.
2 . document = 2 , weight = 2 , group_id = 1 , date_added = Thu Nov   4   19 : 22 : 13   2010
        id
= 2
        group_id
= 1
        group_id2
= 6
        date_added
= 2010 - 11 - 04   19 : 22 : 13
        title
= test two
        content
= this  is  my test document number two
3 . document = 4 , weight = 1 , group_id = 2 , date_added = Thu Nov   4   19 : 22 : 13   2010
        id
= 4
        group_id
= 2
        group_id2
= 8
        date_added
= 2010 - 11 - 04   19 : 22 : 13
        title
= doc number four
        content
= this  is  to test groups

words:
1 ' test ' 3  documents,  5  hits


       sphinx的安装和运行测试已完,下次讲sphinx的中文分词和python调用。