Ubuntu16.04にSphinxをインストールして構成する方法

前書き ##

Sphinxは、全文検索を可能にするオープンソースの検索エンジンです。ご存知のとおり、ビッグデータを非常に効果的に検索できます。インデックス付けされるデータは通常、SQLデータベース、プレーンテキストファイル、HTMLファイル、メールボックスなど、非常に異なるソースから取得されます。

Sphinxの主な機能には次のものがあります。

このチュートリアルでは、配布パッケージに含まれているサンプルSQLファイルを使用して、SphinxサーバーとMySQLサーバーをセットアップします。プロジェクトでSphinxを使用する方法に関する基本的な知識を提供します。

準備 ##

このガイドを開始する前に、次のことを行う必要があります。

ステップ1-Sphinxをインストールする

Sphinxはネイティブパッケージリポジトリにあるため、Ubuntuへのインストールは非常に簡単です。 apt-getを使用してインストールします。

sudo apt-get install sphinxsearch

これで、サーバーにSphinxが正常にインストールされました。 Sphinxデーモンを起動する前に、構成しましょう。

ステップ2-テストデータベースを作成する

次に、パッケージに付属のSQLファイルのサンプルデータを使用してデータベースを設定します。これにより、Sphinx検索が将来機能するかどうかをテストできます。

サンプルSQLファイルをデータベースにインポートしてみましょう。まず、MySQLサーバーシェルにログインします。

mysql -u root -p

求められたら、MySQLルートユーザーのパスワードを入力します。プロンプトが mysql>に変わります。

仮想データベースを作成します。ここではテストと呼びますが、必要に応じて名前を付けることができます。

CREATE DATABASE test;

サンプルSQLファイルをインポートします。

SOURCE /etc/sphinxsearch/example.sql;

次に、MySQLシェルを終了します。

quit

これで、サンプルデータが入力されたデータベースができました。次に、Sphinxの構成をカスタマイズします。

ステップ3-Sphinxを構成する

Sphinxの構成は、 / etc / sphinxsearch sphinx.confという名前のファイルにある必要があります。この構成には、操作に不可欠な3つの主要なブロック、インデックス検索、およびソースが含まれています。後でカスタマイズできるように、各パーツを使用および説明するためのサンプル構成ファイルを提供します。

まず、 sphinx.confファイルを作成します。

sudo nano /etc/sphinxsearch/sphinx.conf

以下では、** index search source **ブロックを順番に説明します。次に、この手順の最後に、 sphinx.confを含むコンテンツ全体をコピーして、ファイルに貼り付けることができます。

**source **ブロックには、MySQLサーバータイプのソース、ユーザー名、およびパスワードが含まれています。 sql_queryの最初の列は一意のIDである必要があります。 SQLクエリは各インデックスで実行され、データをSphinxインデックスファイルにダンプします。以下は、各フィールドとソースブロック自体の説明です。

これはソースブロックです:

source src1
{
 type          = mysql
​
 # SQL settings(for ‘mysql’ and ‘pgsql’ types)
​
 sql_host      = localhost
 sql_user      = root
 sql_pass      = password
 sql_db        = test
 sql_port      =3306 # optional,default is 3306
​
 sql_query     = \
 SELECT id, group_id,UNIX_TIMESTAMP(date_added) AS date_added, title, content \
 FROM documents
​
 sql_attr_uint         = group_id
 sql_attr_timestamp    = date_added
}

** index **コンポーネントには、ソースとストレージのデータパスが含まれています。に

index test1
{
 source        = src1
 path          =/var/lib/sphinxsearch/data/test1
 docinfo       = extern
}

** searchd **コンポーネントには、Sphinxデーモンを実行するためのポートおよびその他の変数が含まれています。

searchd
{
 listen            =9312:sphinx       #SphinxAPI port
 listen            =9306:mysql41      #SphinxQL port
 log               =/var/log/sphinxsearch/searchd.log
 query_log         =/var/log/sphinxsearch/query.log
 read_timeout      =5
 max_children      =30
 pid_file          =/var/run/sphinxsearch/searchd.pid
 seamless_rotate   =1
 preopen_indexes   =1
 unlink_old        =1
 binlog_path       =/var/lib/sphinxsearch/data
}

コピーして貼り付ける完全な構成は次のとおりです。以下で変更する必要がある唯一の変数は、ソースブロックの sql_pass変数で、次のようになります。

source src1
{
 type          = mysql
​
 sql_host      = localhost
 sql_user      = root
 sql_pass      = your_root_mysql_password
 sql_db        = test
 sql_port      =3306
​
 sql_query     = \
 SELECT id, group_id,UNIX_TIMESTAMP(date_added) AS date_added, title, content \
 FROM documents
​
 sql_attr_uint         = group_id
 sql_attr_timestamp    = date_added
}
index test1
{
 source            = src1
 path              =/var/lib/sphinxsearch/data/test1
 docinfo           = extern
}
searchd
{
 listen            =9306:mysql41
 log               =/var/log/sphinxsearch/searchd.log
 query_log         =/var/log/sphinxsearch/query.log
 read_timeout      =5
 max_children      =30
 pid_file          =/var/run/sphinxsearch/searchd.pid
 seamless_rotate   =1
 preopen_indexes   =1
 unlink_old        =1
 binlog_path       =/var/lib/sphinxsearch/data
}

より多くの構成を調べるには、 / etc / sphinxsearch / sphinx.conf.sampleファイルを確認してください。このファイルには、より詳細に説明されているすべての変数が含まれています。

ステップ4-インデックスの管理

このステップでは、Sphinxインデックスにデータを追加し、 cronを使用して、インデックスが最新のデータを保持するようにします。

まず、前に作成した構成を使用して、インデックスにデータを追加します。

sudo indexer --all

次のようなものが得られるはずです。

Sphinx 2.2.9-id64-release(rel22-r5006)Copyright(c)2001-2015, Andrew Aksyonoff
Copyright(c)2008-2015, Sphinx Technologies Inc(http://sphinxsearch.com)
​
using config file '/etc/sphinxsearch/sphinx.conf'...
indexing index 'test1'...
collected 4 docs,0.0 MB
sorted 0.0 Mhits,100.0% done
total 4 docs,193 bytes
total 0.010 sec,18552 bytes/sec,384.50 docs/sec
total 4 reads,0.000 sec,0.1 kb/call avg,0.0 msec/call avg
total 12 writes,0.000 sec,0.1 kb/call avg,0.0 msec/call avg

実稼働環境では、インデックスを最新の状態に保つ必要があります。これを行うには、cronjobを作成しましょう。まず、crontabを開きます。

crontab -e

使用するテキストエディタを尋ねられる場合があります。好きなものを選んでください。このチュートリアルでは、 nanoを使用しました。

次のcronjobは1時間ごとに実行され、前に作成した構成ファイルを使用して新しいデータをインデックスに追加します。それをコピーしてファイルの最後に貼り付けてから、ファイルを保存して閉じます。

@ hourly /usr/bin/indexer --rotate --config /etc/sphinxsearch/sphinx.conf --all

Sphinxが完全にセットアップおよび構成されたので、サービスを開始して試してみることができます。

ステップ5-Sphinxを開始

デフォルトでは、Sphinxデーモンはオフになっています。まず、 / etc / default / sphinxsearchの行 START = noSTART = yesに変更して有効にします。

sudo sed -i 's/START=no/START=yes/g'/etc/default/sphinxsearch

次に、 systemctlを使用してSphinxデーモンを再起動します。

sudo systemctl restart sphinxsearch.service

Sphinxデーモンが正しく実行されているかどうかを確認するには、それを実行します。

sudo systemctl status sphinxsearch.service

次のようなものが得られるはずです。

● sphinxsearch.service - LSB: Fast standalone full-text SQL search engine
 Loaded:loaded(/etc/init.d/sphinxsearch; bad; vendor preset: enabled)
 Active:active(running) since Tue 2016-07-2601:50:00 EDT; 15s ago
   ...

これにより、サーバーが再起動された場合でも、Sphinxデーモンが確実に起動します。

ステップ6-テスト

すべての設定が完了したので、検索機能をテストしてみましょう。 MySQLインターフェイスを使用してSphinxQL(ポート9306)に接続します。プロンプトが mysql>に変わります。

mysql -h0 -P9306

文章を検索してみましょう。

SELECT * FROM test1 WHERE MATCH('test document'); SHOW META;

次のようなものが得られるはずです。

+- - - - - - +- - - - - - - - - - +- - - - - - - - - - - - +| id   | group_id | date_added |+------+----------+------------+|1|1|1465979047||2|1|1465979047|+------+----------+------------+2 rows inset(0.00 sec)
​
+- - - - - - - - - - - - - - - +- - - - - - - - - - +| Variable_name | Value    |+---------------+----------+| total         |2|| total_found   |2|| time          |0.000|| keyword[0]| test     || docs[0]|3|| hits[0]|5|| keyword[1]| document || docs[1]|2|| hits[1]|2|+---------------+----------+9 rows inset(0.00 sec)

上記の結果では、Sphinxがテスト文のインデックス test1で2つの一致を検出したことがわかります。 SHOW META;コマンドは、文中の各キーワードのヒット数も表示します。

いくつかのキーワードを検索してみましょう。

CALL KEYWORDS('test one three','test1',1);

次のようなものが得られるはずです。

+- - - - - - +- - - - - - - - - - - +- - - - - - - - - - - - +- - - - - - +- - - - - - +| qpos | tokenized | normalized | docs | hits |+------+-----------+------------+------+------+|1| test      | test       |3|5||2| one       | one        |1|2||3| three     | three      |0|0|+------+-----------+------------+------+------+3 rows inset(0.00 sec)

上記の結果では、** test1 **インデックスで、Sphinxが次のことを検出したことがわかります。

これで、MySQLシェルを離れることができます。

quit

結論として ##

このチュートリアルでは、Sphinxをインストールし、SphinxQLとMySQLを使用して簡単な検索を行う方法を示しました。

Sphinxを使用すると、カスタム検索をWebサイトに簡単に追加できます。

Sphinx関連のチュートリアルのインストールと構成の詳細については、[Tencent Cloud + Community](https://cloud.tencent.com/developer?from=10680)にアクセスして詳細を確認してください。


参照:「Ubuntu16.04にSphinxをインストールして構成する方法」

Recommended Posts

Ubuntu16.04にSphinxをインストールして構成する方法
Ubuntu16.04にNATSをインストールして構成する方法
Ubuntu18.04にGogsをインストールして構成する方法
Ubuntu18.04にCyberpanelをインストールして構成する方法
Ubuntu16.04にownCloudをインストールして構成する方法
Ubuntu18.04にGitLabをインストールして構成する方法
Ubuntu18.04にAnsibleをインストールして構成する方法
Ubuntu16.04にElasticsearchをインストールして構成する方法
Ubuntu14.04にPostGISをインストールして構成する方法
Ubuntu18.04にVNCをインストールして構成する方法
Ubuntu14.04にOrientDBをインストールして構成する方法
Ubuntu12.04にAppScaleをインストールして構成する方法
Ubuntu14.04にPostGISをインストールして構成する方法
CentOS7にElasticsearchをインストールして構成する方法
Ubuntu16.04にphpMyAdminをインストールして保護する方法
Ubuntu20.04にDockerをインストールして使用する方法
CentOS8にVNCをインストールして構成する方法
Ubuntu18.04にCurlをインストールして使用する方法
Ubuntu18.04にComposerをインストールして使用する方法
Ubuntu18.04にWineをインストールして使用する方法
Ubuntu16.04にphpMyAdminをインストールして保護する方法
CentOS8にRedisをインストールして構成する方法
Ubuntu20.04にComposerをインストールして使用する方法
Ubuntu14.04にBaasBoxをインストールして使用する方法
Ubuntu16.04にPostgreSQLをインストールして使用する方法
CentOS6にphpMyAdminをインストールして構成する方法
CentOS8にOwncloudをインストールして構成する方法
Ubuntu16.04にDockerをインストールして使用する方法
CentOS8にRedmineをインストールして構成する方法
Ubuntu20.04にRubyをインストールする方法
Ubuntu20.04にMemcachedをインストールする方法
Ubuntu20.04にJavaをインストールする方法
Ubuntu20.04にMySQLをインストールする方法
Ubuntu20.04にVirtualBoxをインストールする方法
Ubuntu20.04にElasticsearchをインストールする方法
UbuntuにProtobuf3をインストールするための詳細なチュートリアル
Ubuntu20.04にNginxをインストールする方法
Ubuntu20.04にApacheをインストールする方法
Ubuntu20.04にGitをインストールする方法
Ubuntu16.04にNode.jsをインストールする方法
Ubuntu20.04にMySQLをインストールする方法
UbuntuにMySQLをインストールして構成する
Ubuntu20.04にVagrantをインストールする方法
Ubuntu14.04にBacula-Webをインストールする方法
Ubuntu16.04にPostgreSQLをインストールする方法
Ubuntu20.04にGitをインストールする方法
Ubuntu18.04にAnaconda3をインストールする方法
Ubuntu18.04にMemcachedをインストールする方法
Ubuntu16.04にJenkinsをインストールする方法
Ubuntu14.04にMemSQLをインストールする方法
Ubuntu20.04にGoをインストールする方法
Ubuntu16.04にMongoDBをインストールする方法
Ubuntu14.04にMailpileをインストールする方法
Ubuntu16.04にPrestaShopをインストールする方法
Ubuntu20.04にSkypeをインストールする方法
Ubuntu20.04にJenkinsをインストールする方法
Ubuntu18.04にPython3.8をインストールする方法
Ubuntu20.04にKVMをインストールする方法
ubuntu14.04にopencv3.0.0をインストールする方法
Ubuntu20.04にAnacondaをインストールする方法
Ubuntu16.04にPrometheusをインストールする方法