[shpinx] 검색기 띄우는 스크립트(스핑크스 검색엔진 데몬 쉘스크립트)
스핑크스 검색엔진에서 사용가능한 데몬 띄우는 간단한 쉘스크립트 입니다.
웬만한 쇼핑몰에서 문제 없이 사용가능하며 백만개 정도는 어렵지 않게 처리 합니다.
다만 한국어 형태소 분석기를 색인 단계에서 사용하는 자료가 없고 검색 방식이 좀 그렇기는 하지만 그래도 DB LIKE보다는 월등한 성능을 보입니다.
#!/bin/bash
# 검색엔진
# - 색인된 데이터를 읽어서 클라이언트에 보내준다
# 즉, 이것을 이용하려면 색인이 먼저 되어 있어야 한다
MODE=$1
CONF=/usr/local/sphinx3/etc/sphinx3.conf
SEARCHD=/usr/local/sphinx3/bin/searchd
# cat /usr/local/sphinx3/bin/sh_searchd.sh
case "$MODE" in
start)
if netstat -antp | grep "0.0.0.0:9306" >/dev/null 2>&1; then
echo "실행중... port:9306 "
echo ""
else
${SEARCHD} --config ${CONF}
echo "sphix start ...";
fi
;;
stop)
${SEARCHD} --config ${CONF} --stop
echo "sphix stop ... ";
;;
restart)
${SEARCHD} --config ${CONF} --stop
echo "sphix stop 1 ... ";
sleep 2
if netstat -antp | grep "0.0.0.0:9306" >/dev/null 2>&1; then
${SEARCHD} --config ${CONF} --stop
echo "sphix stop 2 ... ";
sleep 2
/usr/bin/killall searchd
fi
if netstat -antp | grep "0.0.0.0:9306" >/dev/null 2>&1; then
${SEARCHD} --config ${CONF} --stop
echo "sphix stop 3 ... ";
sleep 2
/usr/bin/killall searchd
fi
#
if netstat -antp | grep "0.0.0.0:9306" >/dev/null 2>&1; then
echo '데몬이 종료 되지 않았습니다. sphix 다시 실행해 주세요. ...'
else
${SEARCHD} --config ${CONF}
echo "sphix start ...";
fi
;;
status)
${SEARCHD} --config ${CONF} --status
;;
*)
echo "Usage { start | stop | restart | status }"
exit 1
;;
esac
exit 0
재시작 할때는 포트가 있는지 없는지 확인한 다음 시작하게 되어 있습니다.
아직 데몬이 종료되지 않고 남아 있을 수 있는 부분 때문에 체크하는 부분이 들어가 있습니다.
이부분도 처음 띄울때는 색인처럼 수동으로 해보시고 문제 없는것 같으면 스크립트를 본인의 환경에 맞게 수정하여 사용하시면 됩니다.
* 색인 스크립트