# MySQL中文分詞
全文索引大體分為兩個過程:
* 索引創建(indexer):將現實世界中所有的結構化數據和非結構化數據提取信息,創建索引的過程
* 搜索索引(search):就是得到用戶的查詢請求,搜索創建的索引,然后返回結果的過程
## 編譯安裝 sphinx+mmsg
### 0. 安裝編譯依賴工具包
```
yum install make gcc gcc-c++ libtool autoconf automake imake mysql-devel libxml2-devel expat-devel
```
### 下載穩定版源碼包并解壓
```
[root@localhost.localdomain /usr/local/src]
# wget http://www.coreseek.cn/uploads/csft/3.2/coreseek-3.2.14.tar.gz
[root@localhost.localdomain /usr/local/src]
# tar xf coreseek-3.2.14.tar.gz
[root@localhost.localdomain /usr/local/src]
# cd coreseek-3.2.14
[root@localhost.localdomain /usr/local/src/coreseek-3.2.14]
# ls
csft-3.2.14(sphinx) mmseg-3.2.14 README.txt testpack
其中-- csft-4.1是修改適應了中文環境后的sphinx
Mmseg 是中文分詞插件
Testpack是測試用的軟件包
```
### [安裝 mmseg](http://www.coreseek.cn/products/products-install/install_on_bsd_linux/)
#### cd mmseg
```
[root@localhost.localdomain /usr/local/src/coreseek-3.2.14]
# cd mmseg-3.2.14/
```
#### 執行bootstrap腳本
```
[root@localhost.localdomain /usr/local/src/coreseek-3.2.14/mmseg-3.2.14]
# ./bootstrap
```
#### ./configure --prefix=/usr/local/mmseg
```
[root@localhost.localdomain /usr/local/src/coreseek-3.2.14/mmseg-3.2.14]
# ./configure --prefix=/usr/local/mmseg
```
#### make && make install
```
[root@localhost.localdomain /usr/local/src/coreseek-3.2.14/mmseg-3.2.14]
# make && make install
```
### 安裝coreseek
```
[root@localhost.localdomain /usr/local/src/coreseek-3.2.14/csft-3.2.14]
# ./buildconf.sh
[root@localhost.localdomain /usr/local/src/coreseek-3.2.14/csft-3.2.14]
# ./configure --prefix=/usr/local/coreseek --without-unixodbc --with-mmseg --with-mmseg-includes=/usr/local/mmseg/include/mmseg/ --with-mmseg-libs=/usr/local/mmseg/lib/ --with-mysql
[root@localhost.localdomain /usr/local/src/coreseek-3.2.14/csft-3.2.14]
# make && make install
```
## Sphinx的使用
> 1. 數據源---要讓sphinx知道,查哪些數據,即針對哪些數據做索引(可以定義多個源)
> 2. 索引配置---針對哪個源做索引, 索引文件放在哪個目錄?? 等等
> 3. 搜索服務器---sphinx可以在某個端口(默認9312),以其自身的協議,與外部程序做交互.
**配置數據源**
```
[root@localhost.localdomain /usr/local/coreseek/etc]
# cp sphinx.conf.dist sphinx.conf
[root@localhost.localdomain /usr/local/coreseek/etc]
# vim sphinx.conf
```
如下配置:
source src1 {
type = mysql
sql_host = localhost
sql_user = root
sql_pass = aaaaaa
sql_db = test
sql_query_pre = set names utf8
sql_query_pre = set session query_cache_type=off
sql_query = `select a_id as id,cat_id,title,simtitle,seotitle,tags,source,description,content,dateline,editdateline from article`
sql_attr_uint = a_id
sql_attr_uint = cat_id
sql_attr_timestamp = dateline
sql_attr_timestamp = editdateline
sql_query_info = `SELECT * FROM article WHERE a_id=$id`
}
**索引典型配置**
> index test1 {
> source = test
> path = /usr/local/sphinx/var/data/test1 # 生成索引放在哪
> # stopwords = G:\data\stopwords.txt
> # wordforms = G:\data\wordforms.txt
> # exceptions = /data/exceptions.txt
> charset_dictpath = /usr/local/mmseg/etc/
> charset_type = zh_cn.utf-8
> }
**生成索引文件**
```
[root@localhost.localdomain /usr/local/coreseek/etc]
# /usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/sphinx.conf test1 (test1為索引名稱)
Coreseek Fulltext 3.2 [ Sphinx 0.9.9-release (r2117)]
Copyright (c) 2007-2011,
Beijing Choice Software Technologies Inc (http://www.coreseek.com)
using config file '/usr/local/coreseek/etc/sphinx.conf'...
indexing index 'test1'...
collected 8122 docs, 47.6 MB
sorted 8.7 Mhits, 100.0% done
total 8122 docs, 47596333 bytes
total 17.782 sec, 2676636 bytes/sec, 456.75 docs/sec
total 5 reads, 0.011 sec, 4559.8 kb/call avg, 2.3 msec/call avg
total 58 writes, 0.429 sec, 903.8 kb/call avg, 7.3 msec/call avg
```
> **Error 注意:**
> /usr/local/coreseek/bin/indexer: error while loading shared libraries: **libmysqlclient.so.18**: cannot open shared object file: No such file or directory
> 發現**sphinx**的`indexer`依賴庫`ibmysqlclient.so.18`找不到,通過編輯此文件來修復這個錯誤 `/etc/ld.so.conf`
> `vi /etc/ld.so.conf `
> 將下面這句加到文件到尾部,并保存文件
> `/usr/local/mysql/lib `
> 然后運行下面這個命令即可
> `ldconfig`
在命令行測試查詢
````
[root@localhost.localdomain /usr/local/coreseek]
# ./bin/search -c etc/sphinx.conf 留學
```
- 寫在前面
- MySQL的使用
- MySQL多表同時刪除方案
- MySQL跨表、多表更新SQL語句總結
- MySQL存儲引擎
- 安裝
- 常規方式編譯安裝MySQL
- 采用cmake方式編譯安裝MySQL
- 使用rpm包安裝MySQL
- 使用yum方式安裝MySQL
- 采用二進制方式免編譯安裝MySQL
- 多實例的安裝
- 什么是多實例
- 多實例的作用、問題以及應用場景
- 多實例安裝01【推薦】
- 多實例官方安裝方案02
- 啟動、用戶和權限管理
- 單實例MySQL的啟動和關閉的方法
- 設置及修改MySQL root用戶密碼
- 找回丟失的MySQL root用戶密碼
- 創建MySQL用戶及用戶權限管理
- 基礎命令的操作
- MySQL庫和表相關操作
- MySQL中的索引操作
- MySQL常用命令
- MySQL的錯誤代碼
- MySQL復習秘籍
- 備份與恢復
- 備份
- 恢復
- mysqlbinlog命令
- 服務日志
- 主從復制
- 主從復制部署配置問題匯總
- 主從復制讀寫分離
- 災難恢復
- 配置phpmyadmin連接多實例MySQL
- 其他相關
- Sphinx實驗
- 中文分詞技術
- MySQL語句大全
- 用戶創建、權限、刪除
- 數據庫與表顯示、創建、刪除
- 表復制及備份還原
- 數據庫表中數據操作
- 修改表的列與表名
- 修改表中的數據
- 查詢表
- 日志
- 批量修改Mysql表引擎為InnoDB的方法
- 數據庫抽象層 PDO
- PDO對象常用方法
- PDO 事務處理
- PDO 與 MySQLi 二者效率簡單比較
- 大小寫敏感性 lower_case_table_names
- CentOS7安裝MySQL5.7密碼查看與修改