Sphinx 使用记录
安装 安装前需要先去官网下载源码. 目前最新版本是 2.2.5-release, 点击下载即可。 当然,如果你想直接在命令行下载,直接下载我这个版本也行,就是不知道会不会版本太久。 tiankonguse:~ $ cd /usr/local/srctiankonguse:src $ su root -tiankonguse:src #
安装
安装前需要先去官网下载源码.
目前最新版本是 2.2.5-release, 点击下载即可。
当然,如果你想直接在命令行下载,直接下载我这个版本也行,就是不知道会不会版本太久。
tiankonguse:~ $ cd /usr/local/src tiankonguse:src $ su root - tiankonguse:src # wget http://sphinxsearch.com/files/sphinx-2.2.5-release.tar.gz
然后解压缩,命令就不用说了吧
tiankonguse:src # tar zxvf filename.tar.gz
后来听说 sphinx 有两种安装方式
- 单独安装,查询时采用API调用。
- 使用插件方式把sphinx编译成一个mysql插件并使用特定的sql语句进行检索。
这里我选择第一种方式,毕竟把 sphinx 和 mysql 耦合在一起的话, 将来将成为一个很大的坑。
sphinx 查询出来的是 id, 然后会进行二次查询得到想要的数据。
下面的命令都是在 root 权限下操作的。
tiankonguse:sphinx-2.2.5-release # ./configure –prefix=/usr/local/sphinx tiankonguse:sphinx-2.2.5-release # make && make install
可以使用 --prefix 指向sphinx的安装路径 可以使用 --with-mysql 指向mysql的安装路径。
安装完毕后查看一下 /usr/local/sphinx
下是否有 三个目录 bin etc var,如有,则安装无误!
tiankonguse:sphinx-2.2.5-release # cd /usr/local/sphinx/ tiankonguse:sphinx # ls bin/ etc/ share/ var/
配置
mysql 数据源
由于我使用的是 mysql, 所以需要为 sphinx 创建对应的db。
# server:127.0.0.1 # database : d_sphinx_testdb # table: t_sphinx_article CREATE SCHEMA IF NOT EXISTS `d_sphinx_testdb` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci ; USE `d_sphinx_testdb` ; CREATE TABLE `d_sphinx_testdb`.`t_sphinx_article` ( `c_id` INT NOT NULL AUTO_INCREMENT, `c_title` VARCHAR(45) NOT NULL DEFAULT '', `c_content` VARCHAR(45) NOT NULL DEFAULT '', `c_comment_num` VARCHAR(45) NOT NULL DEFAULT 0, PRIMARY KEY (`c_id`)) ENGINE = InnoDB DEFAULT CHARACTER SET = utf8;
sphinx 配置文件
首先需要找到需要配置的文件以及需要配置的内容。
我们需要配置的是 /usr/local/sphinx/sphinx.conf 文件里面的数据库的信息。
tiankonguse:sphinx # cd etc tiankonguse:etc # tiankonguse:etc # ls example.sql sphinx-min.conf.dist sphinx.conf.dist tiankonguse:etc # cp sphinx.conf.dist sphinx.conf tiankonguse:etc # ls example.sql sphinx-min.conf.dist sphinx.conf sphinx.conf.dist skyyuan:etc $ vi sphinx.conf
可以看到下面的内容设置数据源 source
############################################################################# ## data source definition ############################################################################# source d_sphinx_testdb { # data source type. mandatory, no default value # known types are mysql, pgsql, mssql, xmlpipe, xmlpipe2, odbc type = mysql # 数据库类型 # some straightforward parameters for SQL source types #数据库主机地址 sql_host = 127.0.0.1 #数据库用户名 sql_user = root #数据库密码 sql_pass = pwd #数据库名称 sql_db = d_sphinx_testdb # 数据库采用的端口 sql_port = 3306 # pre-query, executed before the main fetch query # multi-value, optional, default is empty list of queries #执行sql前要设置的字符集 sql_query_pre = SET NAMES UTF8 # main document fetch query mandatory, integer document ID field MUST be the first selected column # 全文检索要显示的内容,在这里尽可能不使用where或group by,将where与groupby的内容交给sphinx,由sphinx进行条件过滤与groupby效率会更高 # select 出来的字段必须至少包括一个唯一主键(ARTICLESID)以及要全文检索的字段,你计划原本在where中要用到的字段也要select出来,这里不需要使用orderby sql_query = SELECT c_id,c_title,c_content,c_comment_num FROM t_sphinx_article #####以下是用来过滤或条件查询的属性############ #sql_attr_ 开头的表示一些属性字段,你原计划要用在where,orderby,groupby中的字段要在这里定义 # unsigned integer attribute declaration sql_attr_uint = c_comment_num # 无符号整数属性 sql_attr_uint = c_id # 无符号整数属性 # boolean attribute declaration # sql_attr_bool = is_deleted # bigint attribute declaration # sql_attr_bigint = my_bigint_id # UNIX timestamp attribute declaration # sql_attr_timestamp = posted_ts # floating point attribute declaration # sql_attr_float = lat_radians # string attribute declaration sql_attr_string = c_title sql_attr_string = c_content # JSON attribute declaration # sql_attr_json = properties # combined field plus attribute declaration (from a single column) # stores column as an attribute, but also indexes it as a full-text field # # sql_field_string = author }
然后设置数据源的索引
index d_sphinx_testdb_index { #数据源名 source = d_sphinx_testdb # 索引记录存放目录 path = /usr/local/sphinx/var/data/d_sphinx_testdb_index # 文档信息存储方式 docinfo = extern #缓存数据内存锁定 mlock = 0 # 形态学 morphology = none # 索引的词最小长度 min_word_len = 1 #数据编码 charset_type = utf-8 #最小前缀 min_prefix_len = 0 #最小中缀 min_infix_len = 1 } indexer { # 内存限制 mem_limit = 32M } searchd { # 监听端口 listen = 9312 # 服务进程日志 log = /usr/local/sphinx/log/searchd.log # 客户端查询日志 query_log = /usr/local/sphinx/log/query.log # 请求超时 read_timeout = 5 # 同时可执行的最大searchd 进程数 max_children = 30 #进程ID文件 pid_file = /usr/local/sphinx/log/searchd.pid # 查询结果的最大返回数 max_matches = 1000 # 是否支持无缝切换,做增量索引时通常需要 seamless_rotate = 1 }
创建索引
进入 bin 目录,执行
./indexer 索引名
错误集
libmysqlclient.so.18
但是我报下面的错误
./indexer: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object file: No such file or directory
原因:这主要是因为你安装库后,没有配置相应的环境变量.可以通过连接修正这个问题
sudo ln /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib/libmysqlclient.so.18
但是还是报错,原来添加一个动态库后需要重新加载动态库。
tiankonguse:bin # ldconfig
Invalid cross-device link
但是我又报错了
ln: creating hard link `/usr/lib/libmysqlclient.so.18 ' => `/usr/local/mysql/lib/libmysqlclient.so.18': Invalid cross-device link
于是我只好创建软连接了。
sudo ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib/libmysqlclient.so.18
查看检索是否启动
tiankonguse:bin # ps -ef | grep search tiankonguse 9601 1 0 Oct28 ? 00:00:00 xs-searchd: master tiankonguse 9602 9601 0 Oct28 ? 00:00:00 xs-searchd: worker[1] tiankonguse 9603 9601 0 Oct28 ? 00:00:00 xs-searchd: worker[2] tiankonguse 9604 9601 0 Oct28 ? 00:00:00 xs-searchd: worker[3] root 32637 18048 0 21:12 pts/0 00:00:00 grep search
WARNING attribute not found
执行索引的时候,看到这个错误,搜索了一下,原来主键不能加入到属性中去。
WARNING: attribute 'c_id' not found - IGNORING
参考文档 数据源配置:mysql数据源 和 WARNING: zero/NULL document_id, skipping .
ERROR index No fields in schema
ERROR: index 't_cover_sphinx_index': No fields in schema - will not index
还是在这里找到了原因。
使用sql_attr设置的字段,只能作为属性,使用SphinxClient::SetFilter()进行过滤;
未被设置的字段,自动作为全文检索的字段,使用SphinxClient::Query("搜索字符串")进行全文搜索
而我把所有字段都设置为 sql_attr 了,于是把需要全文索引的字段去掉。终于跑出一些接过来。
但是还有一些问题。
WARNING sql_query_info removed from Sphinx
WARNING: key 'sql_query_info' was permanently removed from Sphinx configuration. Refer to documentation for details.
好吧,我说怎么没有在配置文件中看到 sql_query_info 的说明呢,原来已经删除了,那就注释掉吧。
word overrun buffer
还是搜主键搜到的原因是我的主键不是一个整数,而 sphinx 要求必须是一个整数。
WARNING: source : skipped 300 document(s) with zero/NULL ids WARNING: word overrun buffer, clipped!!! WARNING: 601 duplicate document id pairs found
原文地址:Sphinx 使用记录, 感谢原作者分享。

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

當你在自己電腦上登過別人steam帳號之後,剛好這個別人的帳號也有wallpaper軟體,切換回自己帳號之後steam就會自動下載別人帳號訂閱的桌布,使用者可以透過關閉steam雲端同步解決。 wallpaperengine登入別的號碼後下載別人的桌布怎麼辦1、登陸你自己的steam帳號,在設定裡面找到雲端同步,關閉steam雲端同步。 2.登陸你之前登陸的別人的steam帳號,打開wallpaper創意工坊,找到訂閱內容,然後取消全部訂閱。 (以後防止找不到壁紙,可以先收藏再取消訂閱)3、切換回自己的stea

超級人類(superpeople)遊戲可以透過steam客戶端下載遊戲,這款遊戲的大小在28G左右,下載到安裝通常需要一個半小時,以下為大家帶來具體的下載安裝教學!新的申請全球封閉測試方法1)在Steam商店(steam客戶端下載)搜尋“SUPERPEOPLE”2)點擊“SUPERPEOPLE”商店頁面下方的“請求SUPERPEOPLE封閉測試訪問權限”3)點擊請求訪問權限按鈕後,將在Steam庫中可確認「SUPERPEOPLECBT」遊戲4)在「SUPERPEOPLECBT」中點選安裝按鈕並下

夸克作為一款方便實用的網盤工具,能夠幫助使用者輕鬆取得喜歡的資源,如果想將某個檔案下載到本機要如何操作呢?下面就由小編來告訴大家,趕快一起學習吧!夸克網盤下載到本地方法分享1、先打開夸克軟體,進入到首頁之後我們點擊右下方的【雲圖標】;2、然後在夸克網盤的頁面中我們點擊其中的【文檔】功能;3、接著來到文件的頁面中選擇好需要下載的文件之後點選【三點圖示】;4、最後點選過後在彈出的對話框中我們點選【下載】即可;

網易郵箱,作為中國網友廣泛使用的一種電子郵箱,一直以來以其穩定、高效的服務贏得了用戶的信賴。而網易信箱大師,則是專為手機使用者打造的信箱軟體,它大大簡化了郵件的收發流程,讓我們的郵件處理變得更加便利。那麼網易信箱大師該如何使用,具體又有哪些功能呢,下文中本站小編將為大家帶來詳細的內容介紹,希望能幫助到大家!首先,您可以在手機應用程式商店搜尋並下載網易信箱大師應用程式。在應用寶或百度手機助手中搜尋“網易郵箱大師”,然後按照提示進行安裝即可。下載安裝完成後,我們打開網易郵箱帳號並進行登錄,登入介面如下圖所示

在如今雲端儲存已成為我們日常生活和工作中不可或缺的一部分。百度網盤作為國內領先的雲端儲存服務之一,憑藉其強大的儲存功能、高效的傳輸速度以及便捷的操作體驗,贏得了廣大用戶的青睞。而且無論你是想要備份重要文件、分享資料,還是在線上觀看影片、聽取音樂,百度網盤都能滿足你的需求。但很多用戶可能對百度網盤app的具體使用方法還不了解,那麼這篇教學就將為大家詳細介紹百度網盤app如何使用,還有疑惑的用戶們就快來跟著本文詳細了解一下吧!百度雲網盤怎麼用:一、安裝首先,下載並安裝百度雲軟體時,請選擇自訂安裝選

貝樂虎兒歌作為孩子們成長過程中不可或缺的陪伴,以其歡快的旋律、生動的畫面和寓教於樂的內容,贏得了無數家長和孩子們的喜愛。為了讓寶貝們能夠隨時隨地享受到兒歌帶來的快樂,許多家長都希望能夠將貝樂虎兒歌下載到手機或平板上方便隨時拿來給孩子聽,但是究竟該如何將貝樂虎的兒歌保存到自己的手機呢,這篇教學就會為大家帶來詳細的內容介紹,還不了解的用戶們就快來跟著本文一起閱讀了解一下吧。貝樂虎兒歌下載兒歌多圖教學:開啟軟體,選擇一首想要下載的兒歌,小編這裡以「經典兒歌」為例2.在兒歌明星的下方點選「下載」按鈕,

在Linux上安裝安卓應用程式一直是許多用戶所關心的問題,尤其是對於喜歡使用安卓應用程式的Linux用戶來說,掌握如何在Linux系統上安裝安卓應用程式是非常重要的。雖然在Linux系統上直接運行安卓應用程式並不像在Android平台上那麼簡單,但是透過使用模擬器或第三方工具,我們依然可以在Linux上愉快地享受安卓應用程式的樂趣。以下將為大家介紹在Linux系統上安裝安卓應

抖音影片如何下載保存?在抖音短視頻APP中是可以下載視頻保存的,多數的用戶不知道抖音如何下載視頻保存,接下來就是小編為用戶帶來的抖音視頻下載保存方法圖文教程,有興趣的用戶快來一起看看吧!抖音使用教學抖音影片如何下載儲存1、先開啟抖音短影片APP,進入主頁點選右側的【分享】按鈕功能;2、之後下方會展開多功能欄,往右側滑動找到【儲存本地】圖示;3、然後在就需要等待下載,之後會出現【已儲存,請去相簿查看】邊框;4、最後跳到相簿頁面,即可看到剛剛下載的影片儲存了。
