centos7下搭建sphinx全文檢索引擎


  Sphinx是一個基於SQL的全文檢索引擎,可以結合MySQL,PostgreSQL做全文搜索,它可以提供比數據庫本身更專業的搜索功能,使得應用 程序更容易實現專業化的全文檢索。Sphinx特別為一些腳本語言設計搜索API接口,如PHP,Python,Perl,Ruby等,同時為MySQL 也設計了一個存儲引擎插件

我要使用Sphinx需要做以下幾件事:

1)、首先得有數據

2)、建立Sphinx配置文件

3)、生成索引

4)、啟動Sphinx

5)、php操作使用之(調用api或search.exe程序進行查詢)

具體搭建步驟:

先下載好sphinx的壓縮包。

1、更新依賴包以及安裝編譯環境
   mount /dev/cdrom /media/cdrom  #先掛載

  yum -y install m4 autoconf automake libtool

  yum -y install gcc gcc-c++ wget

  yum -y install mysql-devel

(以上是需要的編譯環境,如果有就不用重新安了,建議重新安,否則不知道那些已經安裝)

2、下載coreseek -3.2.14.tar.gz(這是一個中文分詞插件壓縮包)

  tar xzvf coreseek-3.2.14.tar.gz
  cd coreseek-3.2.14
  cd mmseg-3.2.14/
  ./bootstrap
  ./configure --prefix=/usr/local/mmseg3
  make
  make install

3、安裝csft-3.2.14

  cd ../csft-3.2.14/
  sh buildconf.sh
  ./configure --prefix=/usr/local/coreseek --without-python --without-unixodbc --with-mmseg --with-mmseg-includes=/usr/local/mmseg3/include/mmseg/ --with-mmseg-libs=/usr/local/mmseg3/lib/ --with-mysql --host=arm

  vi src/sphinxexpr.cpp
直接修改文件的1746, 1777和1823行,然后將所有的T val = ExprEval ( this->m_pArg, tMatch ).....修改為T val = this->ExprEval ( this->m_pArg, tMatch )

  make
  make install

進入配置目錄通過命令ls可以看到3個文件
example.sql  sphinx.conf.dist  sphinx-min.conf.dist
其中example.sql是示例sql腳本我們將其導入到數據庫中的test數據庫中作為測試數據(會創建兩張表 documents和tags)

---------------

4、配置文件更改:

vi /usr/local/coreseek/etc/sphinx.conf
輸入以下內容
source main_src
{
    type                    = mysql
    sql_host                = 192.168.1.70     #查詢的服務器ip地址
    sql_user                = root                   #用戶名
    sql_pass                =root                   # 密碼
    sql_db                    =test       #使用的數據庫
    sql_port                = 3306          # 數據庫端口3306
    sql_sock                                = /tmp/mysql.sock
    sql_query_pre                 = SET NAMES utf8      #定義查詢時的編碼
    sql_query                = \
        SELECT id, group_id, UNIX_TIMESTAMP(date_added) AS date_added, title, content \
        FROM documents                                      #數據源配置核心語句,sphinx使用此語句從數據庫中拉取數據
    sql_attr_uint            = group_id
    sql_attr_timestamp        = date_added
    sql_query_info            = SELECT * FROM documents WHERE id=$id       #設置命令行下返回的信息。
}
index main    #索引名稱
{
    source                    = main_src      #數據源名稱
    path                    = /usr/local/coreseek/var/data/test1     
    docinfo                    = extern
    charset_type            = zh_cn.utf-8
    mlock            = 0
    morphology        = none
    min_word_len        = 1
    html_strip        = 0
    charset_dictpath        = /usr/local/mmseg3/etc/     #中文分詞檢索路徑
    ngram_len                    = 0
}
indexer
{
    mem_limit                = 32M
}
searchd
{
    port                    = 9312
    log                        = /usr/local/coreseek/var/log/searchd.log
    query_log                = /usr/local/coreseek/var/log/query.log
    read_timeout            = 5
    max_children            = 30
    pid_file                = /usr/local/coreseek/var/log/searchd.pid
    max_matches                = 1000
    seamless_rotate            = 1
    preopen_indexes            = 0
    unlink_old                = 1
}


說明:

代碼段source main_src{***} 代表數據源里面主要包含了數據庫的配置信息,main_src表示數據源名字,可以隨便寫。

代碼段index main{***} 代表為哪個數據源創建索引,與source *** 是成對出現的,其中的source參數的值必須是某一個數據源的名字。
其他參數可以查看手冊,這里不再贅述。
生成索引

/usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/sphinx.conf --all     #--all表示生成所有主、增索引,也可寫單獨的索引名稱
啟動命令
/usr/local/coreseek/bin/searchd -c /usr/local/coreseek/etc/sphinx.conf

執行后可以在/usr/local/coreseek/var/data目錄中看到多出一些文件,是以索引名為文件名的不同的擴展名的文件
在不啟動sphinx的情況下即可測試命令:
  /usr/local/coreseek/bin/search -c /usr/local/coreseek/etc/sphinx.conf 中國

以上就算sphinx搭建完成了,一般會配置增量索引,與主索引搭配。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM