YY博客

分享英语网站运营的经验

By

sphinx编译安装出错:undefined reference to libiconv 解决方案

编译过程中提示出错:
错误描述

/usr/local/sphinx/src/sphinx.cpp:20060:undefined reference to libiconv_open'
/usr/local/sphinx/src/sphinx.cpp:20078: undefined reference to
libiconv’
/usr/local/sphinx/src/sphinx.cpp:20084: undefined reference to libiconv_close'
collect2: ld returned 1exit status
make[2]:***[indexer]Error1
make[2]:Leaving directory
/home/sphinx/src’
make[1]: *** [all] Error 2
make[1]: Leaving directory `/home/sphinx/src’
make: *** [all-recursive] Error 1

解决办法:sphinx-2.2.11-release亲测有效:
===============以下为解决方案=======================================================

原因是g++没有添加 -libiconv选项

cd sphinx-2.1.9-release
vi src/Makefile

把LIBS = -lm -lz -lexpat -L/usr/local/lib -lrt -lpthread
改成
LIBS = -lm -lz -lexpat -L/usr/local/lib -lrt -lpthread -liconv

即可。

By

Sphinx 安装与使用方法 详细记录

官方文档
http://sphinxsearch.com/docs/current.html

1)官方下载安装包
http://sphinxsearch.com/downloads/release/
上传sphinx安装包
tar xzvf sphinx-2.2.6-release.tar.gz
cd sphinx-2.2.6-release

2)配置编译和安装
./configure –prefix=/usr/local/sphinx
make
make install
或者一条命令 make && make install

((如果出错的话,可以参考sphinx编译安装出错:undefined reference to libiconv 解决方案))

3)配置 sphinx.conf

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

编辑配置文件,此处使用已编辑好的配置为sphinx-min.conf
上传sphinx-min.conf到/usr/local/sphinx/etc。

4)索引部分:

全索引
/usr/local/sphinx/bin/indexer –config /usr/local/sphinx/etc/sphinx-min.conf –all
/usr/local/sphinx/bin/indexer –config /usr/local/sphinx/etc/sphinx-min.conf –all –rotate
某部分索引
/usr/local/sphinx/bin/indexer –config /usr/local/sphinx/etc/sphinx-min.conf -—mp3share_search
目前使用的配置,增加部分索引方法
/usr/local/sphinx/bin/indexer –config /usr/local/sphinx/etc/conf.d/mp3songfree.conf –all
/usr/local/sphinx/bin/indexer –config /usr/local/sphinx/etc/conf.d/mrtmp3.conf –all –rotate

//增量索引合并 –增量索引偏移表未建立 , 此处未使用增量索引, 以后再实现
//indexer –config /usr/local/sphinx/etc/sphinx-min.conf –merge mp3share mp3shareincre –rotate

5)开启searchd服务
/usr/local/sphinx/bin/searchd –config /usr/local/sphinx/etc/sphinx-min.conf
查看服务状态
/usr/local/sphinx/bin/searchd –config /usr/local/sphinx/etc/sphinx-min.conf –status
停止服务
/usr/local/sphinx/bin/searchd –config /usr/local/sphinx/etc/sphinx-min.conf –stop

无缝轮换服务
/usr/local/sphinx/bin/searchd –config /usr/local/sphinx/etc/sphinx-min.conf –rotate

6)整合进PHP中,使用SphinxQL,以及FoolCode的框架
==========FoolCode的框架 + composer包=====================
https://github.com/FoolCode/SphinxQL-Query-Builder/

7)增加开机启动项及定期更新索引

开机启动:
将以下命令
/usr/local/sphinx/bin/searchd –config /usr/local/sphinx/etc/sphinx-min.conf

加入etc/rc.local

暂时手动更新索引

结束。
——–目录说明———–
searchd 目录: /usr/local/sphinx/bin/searchd

By

debian7 安装 MySQLdb模块