Version: %%SPHINX_VERSION%%
You can read the official changelog for details on changes.
A Sphinx Search instance builded from source.
Supports:
-
stemming (via libstemmer, link)
-
xml (with expat and iconv)
-
postgresql
-
mysql
-
odbc
-
regular expression filter (via RE2 engine, version %%GOOGLE_RE_VERSION%%, link)
-
lemmatization
/var/diz/sphinx/ru.pak
(russian dict)/var/diz/sphinx/en.pak
(english dict)/var/diz/sphinx/de.pak
(deutsch dict)
-
9312
for client connections -
9306
for SQL connections
This image provides some directories for configurations, logs and other files:
-
/var/idx/sphinx
-
/var/log/sphinx
-
/var/lib/sphinx
-
/var/run/sphinx
-
/var/diz/sphinx
All this directories are data volumes.
The available scripts are:
searchd.sh
, to startsearchd
in the foreground (needed also for real-time indexes)indexall.sh
, to index all the plain indexes (i.e.,indexer --all
) defined in the configuration
Both scripts and Sphinx Search's tools (e.g., the spelldump
tool) are available from the PATH.
To list all Sphinx Search's tool you can execute:
docker run -it leodido/sphinxsearch:%%SPHINX_VERSION%% ls /usr/local/bin
# indexer indextool searchd spelldump wordbreaker
You can clone this repository and manually build it.
cd dockerfiles/sphinxsearch\:%%SPHINX_VERSION%%
docker build -t leodido/sphinxsearch:%%SPHINX_VERSION%% .
Otherwise you can pull this image from docker index.
docker pull leodido/sphinxsearch:%%SPHINX_VERSION%%
The simplest use case is to start a Sphinx Search container, attach to it and do whatever you want with it:
docker run -i -t leodido/sphinxsearch:%%SPHINX_VERSION%% /bin/bash
Assume that we want to index our documents into some real-time indexes.
Given a Sphinx Search configuration file (e.g., sphinx.conf
) in our current directory (i.e., $PWD
), we have to share its content with the container using docker option -v
.
We also want to link to exposed 9306
port to query Sphinx Search from the host machine.
So, the command to run a daemonized instance of this container is:
SS=$(docker run -i -t -v $PWD:/usr/local/etc -p 9306 -d leodido/sphinxsearch:%%SPHINX_VERSION%% searchd.sh)
Now we want to see to which host address it has been linked:
docker port $SS 9306 # which returns 49174
And eventually try to connect to it:
mysql -h 0.0.0.0 -P 49174
We can now index documents into our Sphinx Search container or perform queries against it.
Assume that we want to index our documents into some plain indexes.
We need:
-
the data source files (e.g. XML files structured as demanded by the Sphinx Search's xmlpipe2 driver)
-
a valid Sphinx Search configuration file that defines our plain indexes and their sources
-
a way to querying Sphinx Search from the host machine (e.g., using IP
127.0.0.1
and port9306
)
So, assuming that in our current directory (i.e., $PWD
) we have these files, we run a daemonized instance of Sphinx Search as follow:
docker run -i -t -v $PWD:/usr/local/etc -p 127.0.0.1:9306:9306 -d leodido/sphinxsearch:%%SPHINX_VERSION%% indexall.sh
This way we have indexed our documents and started serving queries.
Again, if you want to query from the host machine:
mysql -h 127.0.0.1 -P 9306