sdsphinx/Sphinx.sh

242 lines
9.5 KiB
Bash
Raw Normal View History

2011-10-24 09:07:16 +02:00
#!/bin/bash
source parametres.sh
source function.sh
allVersion=("2.0.1" "0.9.9")
source='files/description.list'
echo ' ____ __ ____ __ '
echo '/\ _`\ /\ \ __ /\ _`\ /\ \__ '
echo '\ \,\L\_\ _____\ \ \___ /\_\ ___ __ _ \ \ \L\_\ __ ___ __ _ __ __ \ \ ,_\ ___ _ __ '
echo ' \/_\__ \ /\ __` \ \ _ `\/\ \ / _ `\ /\ \/ \ \ \ \L_L / __`\/ _ `\ / __`\/\` __\/ __`\ \ \ \/ / __`\/\` __\'
echo ' /\ \L\ \ \ \L\ \ \ \ \ \ \ \/\ \/\ \\/> </ \ \ \/, \/\ __//\ \/\ \/\ __/\ \ \//\ \L\.\_\ \ \_/\ \L\ \ \ \/ '
echo ' \ `\____\ \ ,__/\ \_\ \_\ \_\ \_\ \_\/\_/\_\ \ \____/\ \____\ \_\ \_\ \____\\ \_\\ \__/.\_\\ \__\ \____/\ \_\ '
echo ' \/_____/\ \ \/ \/_/\/_/\/_/\/_/\/_/\//\/_/ \/___/ \/____/\/_/\/_/\/____/ \/_/ \/__/\/_/ \/__/\/___/ \/_/ '
echo ' \ \_\ '
echo ' \/_/ '
#This program as been create by Damien for Scores et decisions ste
#Email : dlasserre@scores-decisions.com
#if [ man page exist ! ]
# download ans install man page !
if [ `id -u` = 0 ] #Need Root or Sudo
then
commande=('--configure' '--install' '--all')
for i; do
case $i in
'--help')
`man SphinxHelp` #en cours de création du man !
;;
'--delete')
`rm -r indexeConf source sphinx-* wget* libste* *~ 2> /dev/null`
echo -e "- Clean directory"
exit
;;
'--version')
echo -e "1. Last version : 2.0.1"
echo -e "2. Past version : 0.9.9\n"
;;
'--install')
#Environement for installation
if [ ! -f sphinx-error-log.log ];then `touch sphinx-error-log.log &`; log="Success"; fi
if [ ! -e indexeConf ];then `mkdir indexeConf`; indexeConf="Success"; fi
`touch indexeConf/sphinx.conf`
sphinxconf="Success"
if [ ! -e source ];then `mkdir source`; source="Success"; fi
if [ ! -e /dbs ];then `mkdir /dbs`; dbs="Success"; fi
if [ ! -e /dbs/sphinx ];then `mkdir /dbs/sphinx`; sphinx="Success"; fi
if [ ! -e /dbs/sphinxlog ];then `mkdir /dbs/sphinxlog`; sphinxlog="Success"; fi
if [ ! -e /init.d/sphinxsearch ];then `cp files/sphinxsearch /etc/init.d/; update-rc.d sphinxsearch defaults`;sphinxinit="Success"; fi
#Check if package in directory, if you want to download manually the package
if [ ! -e sphinx-2.0.1.tar.gz ] || [ ! -e sphinx-0.9.9.tar.gz ]
then
if [ ! -z $2 ]; then
if [ $2 == "2.0.1" ]; then
version="$2-beta"
elif [ $2 == "0.9.9" ]; then
version="$2"
else
echo -e $ROUGE"[Erreur]: This version not exist !"$NORMAL
exit
fi
echo -e $CYAN"Download Sphinx-$version..."$NORMAL
`wget -b http://sphinxsearch.com/files/sphinx-$version.tar.gz >/dev/null`
loadIndication `(ps -C wget -o pid=)`
`rm wget-log*`
else
echo -e $ROUGE"[Erreur]: Please specifie version, exemple 2.0.1 or 0.9.9"$NORMAL
exit
fi
fi
`tar -z -xf sphinx-$version.tar.gz -C source `
`rm sphinx-$version.tar.gz*`
echo -e " - Extract files..."
echo -e " - Complited"
#If libstemmer not installed in source/
if [ -e libstemmer_c.tgz ]
then
echo -e $CYAN"Extract file from libstemmer_c..."$NORMAL
`cd source/sphinx-$version ; tar -zxf libstemmer_c.tgz`
echo -e " - Complited"
else
echo -e $CYAN"Download and Configure libstemmer..."$NORMAL
`cd source/sphinx-$version ; wget -b http://snowball.tartarus.org/dist/libstemmer_c.tgz > /dev/null`
loadIndication `(ps -C wget -o pid=)`
fi
echo -e "- Extract files..."
`cd source/sphinx-$version ; tar -zxf libstemmer_c.tgz`
echo -e "- Complited"
`cd source/sphinx-$version ; rm libstemmer_c.tgz`
libstemmer="100%"
echo ""
echo -e $CYAN"Configuration progress..."$ROUGE
`cd source/sphinx-$version ; sh configure --with-libstemmer --prefix=/usr/local/sphinx 1> /dev/null `
echo -e $NORMAL"- Complited"
echo -e $NORMAL
echo -e $CYAN"Compilation progress..."$ROUGE
if [ $version != "2.0.1-beta" ];then `cd source/sphinx-$version ; make ` ;fi
#Make and install binary.
#`cd source/sphinx-$version/ ; make install 1> /dev/null`
echo -e $NORMAL" - Complited"
echo ""
echo -e $CYAN"Visualisation"$NORMAL
echo -e "---------------------------------------------------------------------------------------"
echo -e "1. Directory : source " $VERT $source $NORMAL
echo -e "2. Directory : indexeConf " $VERT $indexeConf $NORMAL
echo -e "3. Directory : /dbs " $VERT $dbs $NORMAL
echo -e "4. Directory : /dbs/sphinx " $VERT $sphinx $NORMAL
echo -e "5. Directory : /dbs/sphinxlog " $VERT $sphinxlog $NORMAL
echo -e "6. File : sphinx-error-log.log " $VERT $log $NORMAL
echo -e "7. File : indexeConf/sphinx.conf " $VERT $sphinxconf $NORMAL
echo -e "8. File : /init.d/sphinxsearch " $VERT $sphinxinit $NORMAL
if [ ! -z $2 ]; then
if [ $2 == "2.0.1" ] || [ $2 = "0.9.9" ] || [ $2 = "0.9.5" ]; then
echo -e "9. Archive : sphinx-$2-beta.tar.gz "$VERT"100%"$NORMAL
else
echo -e "9. Archive : Version : $2 not exist " $ROUGE "Failed" $NORMAL
fi
fi
echo -e "10. Archive : libstemmer_c.tgz " $VERT $libstemmer $NORMAL
echo -e "11. Compilation : /source/sphinx-$version/src/libstemmer_c "$VERT"Compiled" $NORMAL
echo -e "12. Compilation : /source/sphinx-$version/src/ "$VERT"Complited" $NORMAL
echo -e $VERT"Directory and Files as beens creates\n" $NORMAL
echo -n "Machine MASTER ? (y/n) : "; read response
if [ $response = 'y' ];then
MASTER=1
echo -e $ROUGE"Mode MASTER activated"$NORMAL
else
MASTER=0
echo -e $ROUGE"Mode SLAVE activated"$NORMAL
fi
echo -n "Do you want to configure Index ? (y/n) : "; read response
if [ $response = 'y' ]
then
echo -n "Please Enter name of index file (act ent etc...) : "
read response
for index in ${response[@]}
do
createIndexeFile $index "false"
echo -e " - Written data in $index.sphinx.conf"
echo -e $VERT"File $index as been create"$NORMAL
done
`cat files/config.sphinx >> indexeConf/sphinx.conf`
`cp indexeConf/sphinx.conf .`
fi
`cp source/sphinx-$version/src/searchd /usr/bin/`;
`cp source/sphinx-$version/src/indexer /usr/bin/`;
`cp sphinx.conf /usr/local/sphinx/etc/`;
echo -e $VERT"The installation as been finish ! great ! thank's damien :)"$NORMAL
exit
;;
'--add')
#Add a index
if [ ! -e indexeConf/$2.sphinx.conf ]
then
echo -e $CYAN"Adding index progress..."$NORMAL
`cp files/generic.sphinx.conf indexeConf/$2.sphinx.conf`
`sed -e "s/xindex/$2/g" -i indexeConf/$2.sphinx.conf`
createIndexeFile $2 "true"
echo -e " - Check if this index exist"
echo -e " - Create file in indexeConf/$2.sphinx.conf"
echo -e " - Adding index in sphinx.conf"
echo -e $VERT"Index $2 as been create"$NORMAL
`rm tmp`
`cp indexeConf/sphinx.conf .`
exit
else
echo -e $ROUGE"[Erreur]: This index already exist !"$NORMAL
exit
fi
`cp sphinx.conf /usr/local/sphinx/etc/`;
echo -e $VERT"Configuration started" $NORMAL
;;
'--remove')
#Run all action.
if [ -e indexeConf/$2.sphinx.conf ]
then
echo -e $CYAN"Remove progress..."$NORMAL
`rm indexeConf/$2.sphinx.conf`
`cat indexeConf/* > indexeConf/sphinx.conf`
`cat files/config.sphinx >> indexeConf/sphinx.conf`
echo -e " - Delete file indexeConf/$2.sphinx.conf"
echo -e " - Delete data in sphinx.conf"
echo -e $VERT"Index $2 as been delete"$NORMAL
`rm tmp > /dev/null`
`cp indexeConf/sphinx.conf .`
exit
else
echo -e $ROUGE"[Erreur]: This index: $2 not exist ! impossible to remove !"$NORMAL
exit
fi
;;
'--updateQuery')
if [ ! -z $2 ]
then
echo -e $CYAN"Update Query progress..."$NORMAL
query=`cat $3`
`sed -e "s/#xqueryx/$query/g" -i indexeConf/$2.sphinx.conf`
`cat indexeConf/sphinx.conf > tmp`
`cat indexeConf/$2.sphinx.conf > indexeConf/sphinx.conf`
`cat tmp >> indexeConf/sphinx.conf`
echo -e " - Query as been update in index $2"
echo -e " - Refreshing sphinx.conf"
echo -e $VERT"Operion successfull"$NORMAL
`rm tmp > /dev/null`
`cp indexeConf/sphinx.conf .`
exit;
fi
`cp sphinx.conf /usr/local/sphinx/etc/`;
;;
'--refresh')
if [ -d indexeConf ]
then
`rm indexeConf/*~ 2> /dev/null`
echo -e $CYAN"Refreshing progress..."$NORMAL
directory=`ls indexeConf`
for index in ${directory[*]}
do
echo " - Refreshing : "$index
done
`cat indexeConf/*.sphinx.conf > sphinx.conf`
`cat files/config.sphinx >> sphinx.conf`
echo -e $VERT"Refreshing as been finish"$NORMAL
exit
else
echo -e $ROUGE"[Erreur]: nothing has refresh !"$NORMAL
exit
fi
`cp sphinx.conf /usr/local/sphinx/etc/`;
;;
*)
#Default
echo -e $ROUGE"[Erreur]" ${ERREURS["CMD"]} $NORMAL
exit
;;
esac
done
echo -e $ROUGE"[Erreur]" ${ERREURS["NOCMD"]} $NORMAL
else
echo -e $ROUGE"[Erreur]" ${ERREURS["CHMOD"]} $NORMAL
fi