source src1
{
type = mysql
sql_host = localhost
sql_user = user
sql_pass = password
sql_db = database
sql_port = 3306
sql_sock = /var/run/mysqld/mysqld.sock
sql_query_pre = SET NAMES utf8
sql_query_range = SELECT MIN(idx),MAX(idx) FROM test
sql_range_step = 1024
sql_query = \
SELECT idx, type, search \
FROM test \
WHERE idx >= $start AND idx <= $end
sql_attr_uint = type
sql_ranged_throttle = 0
}
source src1throttled : src1
{
sql_ranged_throttle = 100
}
index test1
{
source = src1
path = /usr/local/sphinx/var/data/test1
docinfo = extern
mlock = 0
morphology = none
min_word_len = 1
charset_type = utf-8
charset_table =
min_prefix_len = 0
min_infix_len = 2
enable_star = 1
ngram_len = 1
html_strip = 0
}
index test1stemmed : test1
{
path = /usr/local/sphinx/var/data/test1stemmed
morphology = stem_en
}
index dist1
{
type = distributed
local = test1
local = test1stemmed
agent = localhost:3313:remote1
agent = localhost:3314:remote2,remote3
agent_connect_timeout = 1000
agent_query_timeout = 3000
}
indexer
{
mem_limit = 256M
}
searchd
{
address = 127.0.0.1
port = 3312
log = /usr/local/sphinx/var/log/searchd.log
query_log = /usr/local/sphinx/var/log/query.log
read_timeout = 5
max_children = 2048
pid_file = /usr/local/sphinx/var/log/searchd.pid
max_matches = 10000
seamless_rotate = 1
preopen_indexes = 0
unlink_old = 1
}
2007년 12월 30일 일요일
sphinx test
sphinx.conf 파일(한글도 물론 잘된다!)
2007년 12월 23일 일요일
sphinxSE install
오늘 드디어 미뤄 왔던 mysql에 sphinx-engine을 패치해서 소스 컴파일을 하는 작업을 했다.(이놈의 귀차니즘...)
우선 sphinx를 압축해제 후에 mysqlse/sphinx-version.diff 에 맞는 파일을 mysql 소스 디렉토리에 복사한다.
우선 sphinx를 압축해제 후에 mysqlse/sphinx-version.diff 에 맞는 파일을 mysql 소스 디렉토리에 복사한다.
# patch -p1 < sphinx-version.diff # BUILD/autorun.sh # mkdir sql/sphinxsphinx 소스파일을 sql/sphinx로 복사
# CC=gcc # CFLAGS="-O3 -march=i686 -fomit-frame-pointer -pipe -felide-constructors -fno-exceptions -fno-rtti" # CXXFLAGS="-O3 -march=i686 -felide -constructors -fno-execptions -fno-rtti" # CXXLDFLAGS="" # ./configure --prefix=/usr/local/mysql \ --enable-assembler \ --with-extra-charsets=complex \ --enable-thread-safe-client \ --with-big-tables \ --enable-local-infile \ --with-sphinx-storage-engine \ --with-unix-socket-path=/usr/local/mysql/tmp/mysql.sock \ --localstatedir=/usr/local/mysql/data \ --with-user=mysql \ --with-charset=utf8 \ --with-extra-charsets=complex \ --with-mysqld-ldflags=-all-static \ --with-client-ldflags=-all-static (--with-plugins=sphinx in 5.1) # make; make install aclocal: configure.in: 486: macro `AM_PROG_AS' not found in library Can't execute aclocal위와같이 build시 에러가 난다면 automake를 1.9이상으로 업데이트하고 (apt-get install automake1.9) 아래와 같이 automake를 변경한다.
update-alternatives --set automake /usr/bin/automake-1.9yacc.sql 관련 에러가 나면 bison package를 설치하면된다. 이 package는 A parser generator that is compatible with Y 요거란다. :) sphinx/ha_sphinx.cc:273: error: extra qualification ‘CSphSEFilter::’ on member ‘CSphSEFilter’ 이 에러는 확인해본결과 0.9.7 버전에 있는 sphinx 64bit 관련된 버그란다. o.9.7 이상을 사용하던가 아니면 patch를 하면된다. (패치는 못찾았다. --; 아니 귀찮아서 안찾았다.) 이제 문제는 현재 서버에는 ubuntu package로 mysql-server가 설치되어있다. 이미 설치되어있는걸 지우지 않고 mysql server를 하나 더 사용할려고 한다. 대충 찾아본 결과 my.cnf만 실행할때 설정해주면 된다고 한다. 우선 기본적으로 행할 것은
# groupadd mysql # useradd -g mysql -d /dev/null -s /usr/sbin/nologin mysql # /usr/local/mysql/bin/mysql_install_db 로 databases를 생성한다. # mkdir /var/run/mysql # mkdir /data/mysql # mkdir /var/log/mysql # chgrp mysql /var/run/mysql # chmod g+rw /var/run/mysql # chgrp mysql /var/log/mysql # chmod g+rw /var/log/mysql # chown -R root . # chown -R mysql /data/mysql # chgrp -R mysql . # chgrp -R mysql /data/mysql # chown -R root /usr/local/mysql # chown -R mysql /usr/local/mysql/data # chgrp -R mysql /usr/local/mysql이번에 sock 디렉토리를 /usr/local/mysql/tmp로 설정했다.
# mkdir /usr/local/mysql/tmp # chown -R mysql.mysql /usr/local/mysql/tmpmy.cnf파일은 /usr/local/mysql/share/mysql/my-large.cnf 를 my.cnf로 복사해서 사용했다. my.cnf에 추가한 사항은
[client] port = 3307 socket = /usr/local/mysql/tmp/mysql.sock [mysqld] user = mysql port = 3307 pid-file = /usr/local/mysql/tmp/mysql.pid socket = /usr/local/mysql/tmp/mysql.sock default-character-set = utf8스크립트 등록
cp /usr/local/mysql/share/mysql/mysql.server /etc/init.d/mysql라이브러리 등록
echo /usr/local/mysql/lib/mysql >> /etc/ld.so.conf && ldconfig정도 추가했다. 기타 에러가 발생할경우 /usr/local/mysql/data/hostname.err파일을 살펴보면 된다. 실행방법은 mysql -hlocalhost -u사용자 -p -P(설정한포트)로 실행 하면된다. 현재 에러 없이 가장 잘되는 버전은 mysql-5.0.22.tar.gz와 sphinx-0.9.8-svn-r985.tar.gz 이버전 두개를 사용했을때 설치가 잘되었다. mysql-5.1 버전을 사용했을때는 innodb engine이 설치가 되지 않았었다. configure할때 옵션을 추가해야 가능하다.
mysql> show engines; +------------+---------+----------------------------------------------------------------+ Engine Support Comment +------------+---------+----------------------------------------------------------------+ MyISAM DEFAULT Default engine as of MySQL 3.23 with great performance MEMORY YES Hash based, stored in memory, useful for temporary tables InnoDB YES Supports transactions, row-level locking, and foreign keys BerkeleyDB NO Supports transactions and page-level locking BLACKHOLE NO /dev/null storage engine (anything you write to it disappears) EXAMPLE NO Example storage engine ARCHIVE NO Archive storage engine CSV NO CSV storage engine SPHINX YES Sphinx storage engine 0.9.8 ndbcluster NO Clustered, fault-tolerant, memory-based tables FEDERATED NO Federated MySQL storage engine MRG_MYISAM YES Collection of identical MyISAM tables ISAM NO Obsolete storage engine +------------+---------+----------------------------------------------------------------+
피드 구독하기:
덧글 (Atom)