>백엔드 개발 >PHP 튜토리얼 >Linux에서 Sphinx, 중국어 단어 분할 coreseek 및 PHP sphinx 확장을 컴파일하고 설치합니다.

Linux에서 Sphinx, 중국어 단어 분할 coreseek 및 PHP sphinx 확장을 컴파일하고 설치합니다.

伊谢尔伦
伊谢尔伦원래의
2016-11-25 15:57:222099검색

Linux 환경은 CentOS5.5, Ubuntu12.04

1. 소프트웨어 다운로드

sphinx-2.1.3

coreseek-4.1

2. 스핑크스 설치

tar zxvf sphinx-2.1.3.tar.gz //解压sphinx包
cd sphinx-2.1.3
./configure --prefix=/usr/local/sphinx --with-mysql=/usr/local/mysql/

--prefix: 스핑크스 설치 경로 지정
--with-mysql: mysql 설치 경로 지정

sudo make && make install

컴파일 및 설치

성공적으로 설치되면 sphinx는 세 가지 명령을 생성합니다:

indexer 创建索引命令
searchd 启动进程命令
search 命令行搜索命令

참고: 위 명령은 기본적으로 /usr/local/sphinx/bin 디렉터리에 있습니다

3. 스핑크스를 구성하고

cd /usr/local/sphinx/etc

을 사용하여 스핑크스의 etc 디렉터리에 들어가

sudo cp sphinx.conf.dist sphinx.conf

구성 파일을 복사하고 이름을 sphinx.conf로 지정합니다.

이 디렉터리의 example.sql 파일을 test라는 로컬 데이터베이스로 가져옵니다.

구성 정보를 수정하고 데이터베이스 연결 정보를 로컬 데이터베이스 정보로 변경하세요.

그런 다음 다음 명령을 사용하여 데이터를 가져오고 인덱스를 생성합니다.

$ cd /usr/local/sphinx/etc
$ sudo /usr/local/sphinx/bin/indexer --all

인덱서 명령을 실행할 때 오류가 보고되는 경우:

ERROR: index 'test1stemmed': sql_connect: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'

mysql.sock의 위치 때문에 이 시스템에서 변경된 위치는 /tmp/mysql.sock입니다(mysql 설치 시 설정과 관련). sphinx.conf에서 이 줄의 주석 처리를 제거하세요(앞의 # 기호 제거). :

#sql_sock                = /tmp/mysql.sock

위 인덱서 명령을 다시 실행하면 모든 것이 정상입니다.

쿼리를 실행하려면 다음 명령을 사용할 수 있습니다.

$ cd /usr/local/sphinx/etc
$ sudo /usr/local/sphinx/bin/search test

검색 프로세스 중에 오류가 보고될 수 있습니다.

index 'test1': search error: query too complex, not enough stack (thread_stack=-2665032K or higher required).

스핑크스에서 시도했습니다. .conf searchd 모듈의 thread_stack 값을 수정해도 문제가 해결되지 않았습니다. 나중에 소스 src1에서 다음 행

#sql_query_info         = SELECT * FROM documents WHERE id=$id

을 주석 처리한 후 search 명령을 실행했는데 괜찮았습니다.

백그라운드에서 sphinx를 시작하려면 다음 명령을 사용하세요.

$ cd /usr/local/sphinx/etc
$ sudo /usr/local/sphinx/bin/searchd

php 스크립트를 사용하여 검색 명령을 실행할 수 있습니다.

$ cd sphinx/api
$ php test.php test

입력 결과는 다음과 같습니다.

Query 'test ' retrieved 3 of 3 matches in 0.022 sec.
Query stats:
'test' found 10 times in 6 documents
Matches:
1. doc_id=1, weight=101, group_id=1, date_added=2014-01-20 10:07:37
2. doc_id=2, weight=101, group_id=1, date_added=2014-01-20 10:07:37
3. doc_id=4, weight=1, group_id=2, date_added=2014-01-20 10:07:37

4. coreseek 설치

tar zxvf coreseek-4.1.tar.gz

압축을 풀면 csft-4.1, mmseg-3.2.14

mmseg를 먼저 설치하세요

cd mmseg-3.2.14/
./configure --prefix=/usr/local/mmseg
컴파일 중에 오류가 발생하는 경우: "config.status: 오류: 입력 파일을 찾을 수 없습니다: src/Makefile.in"

해결책:

sudo apt-get install automake
aclocal
libtoolize --force 我运行后有一个错误,没管它。
automake --add-missing
autoconf
autoheader
make clean
./configure --prefix=/usr/local/mmseg
make
sudo make install
csft(coreseek) 설치

cd csft-4.1/
sh buildconf.sh
./configure --prefix=/usr/local/coreseek --with-mysql=/usr/local/mysql/ --with-mmseg=/usr/local/mmseg/ --with-mmseg-includes=/usr/local/mmseg/include/mmseg/ --with-mmseg-libs=/usr/local/mmseg/lib/ 
sudo make && make install
설치가 완료되면 sphinx 설치 후와 동일하게 coreseek/etc/example.sql 파일을 import 해야 합니다. 로컬 데이터베이스에 넣은 다음 sphinx.conf.dist를 csft.conf에 복사하고 데이터베이스 사용자 이름과 비밀번호를 수정합니다. 스핑크스의 테스트 오류와 오류 해결 방법은 동일합니다.

스핑크스를 사용하려면

1. 데이터가 있어야 합니다.

2.스핑크스 구성 파일을 만듭니다. 인덱스 생성

4. searchd 서비스 프로세스를 시작합니다. 기본값은 9312입니다.

5. PHP를 사용하여 sphinx 서비스에 연결

sphinx 시작

시작 명령

cd /usr/local/coreseek/bin/
./searchd
searchd 명령 매개변수 소개:

-c는 구성 파일을 지정합니다

--stop은 서비스를 중지합니다

-- pidfile은 PID 파일을 명시적으로 지정하는 데 사용됩니다

-p는 포트를 지정합니다

5. PHP 설치 스핑크스 확장

오류가 발생하는 경우: "configure: error : libsphinxclient 헤더를 찾을 수 없습니다."

sudo pecl install sphinx
해결 방법:

해결되었습니다!

cd coreseek-4.1/csft-4.1/api/libsphinxclient/
./configure --prefix=/usr/local/libsphinxclient
sudo make && make install
뒤로 돌아가서 실행

"공유 확장 설치: /usr/lib/php5/20090626/sphinx.so"와 유사한 메시지가 나타나 성공을 나타냅니다.

./configure --with-php-config=/usr/local/php/bin/php-config --with-sphinx=/usr/local/libsphinxclient
sudo make && make install
이 디렉토리에 들어가면 생성된 sphinx.so 파일을 찾을 수 있습니다.

php.ini에서 so 파일을 로드합니다.

extension=/usr/lib/php5/ 20090626/sphinx.so

아파치를 다시 시작하면 phpinfo()에 성공을 나타냅니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.