MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

Ubuntu16.04にSphinxをインストールしてセットアップする方法


この記事では、Ubunt 16.04にSphinxをインストールしてセットアップする方法について学習します。Sphinxは完全なテスト検索を可能にするオープンソースの検索エンジンであり、データがどこからでも非常に効果的に大量のデータを使用して検索を実行するのに最適です。任意のソース(例-SQLデータベース、プレーンテキストファイルなど)

スフィンクスの特徴

  • 高度なインデックスとクエリ用の優れたツール。

  • 高い検索パフォーマンスとインデックス。

  • 後処理の結果を進めます。

  • 高度な検索で簡単にスケーラブル。

  • SQLおよびXMLソースと統合できます。

  • 何千ものクエリで巨大なデータを処理するためにスケーラブルにすることができます。

前提条件

始める前に、いくつかの前提条件が必要でした。

  • マシン上でsudo権限を持つ非rootユーザーのUbuntuマシンが必要でした。

  • MySQLがマシンにインストールされています。

マシンへのSphinxのインストール

apt-getを使用してUbuntuのネイティブパッケージリポジトリを使用してSphinxを直接インストールできます。以下は、Sphinxをインストールするためのコマンドです。

$ sudo apt-get install sphinxsearch
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
libmysqlclient20 libstemmer0d
The following NEW packages will be installed:
libmysqlclient20 libstemmer0d sphinxsearch
0 upgraded, 3 newly installed, 0 to remove and 92 not upgraded.
Need to get 2,608 kB of archives.
After this operation, 20.5 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 https://in.archive.ubuntu.com/ubuntuxenial/universe amd64 libstemmer0d amd 64 0+svn585-1 [62.1 kB]
Get:2 https://in.archive.ubuntu.com/ubuntuxenial-updates/main amd64 libmysqlclie nt20 amd64 5.7.15-0ubuntu0.16.04.1 [809 kB]
Get:3 https://in.archive.ubuntu.com/ubuntu xenial/universe amd64 sphinxsearch amd 64 2.2.9-1build1 [1,737 kB]
Fetched 2,608 kB in 2s (986 kB/s)
Selecting previously unselected package libstemmer0d:amd64.
(Reading database ... 117542 files and directories currently installed.)
Preparing to unpack .../libstemmer0d_0+svn585-1_amd64.deb ...
Unpacking libstemmer0d:amd64 (0+svn585-1) ...
Selecting previously unselected package libmysqlclient20:amd64.
Preparing to unpack .../libmysqlclient20_5.7.15-0ubuntu0.16.04.1_amd64.deb ...
Unpacking libmysqlclient20:amd64 (5.7.15-0ubuntu0.16.04.1) ...
Selecting previously unselected package sphinxsearch.
Preparing to unpack .../sphinxsearch_2.2.9-1build1_amd64.deb ...
Unpacking sphinxsearch (2.2.9-1build1) ...
Processing triggers for libc-bin (2.23-0ubuntu3) ...
Processing triggers for ureadahead (0.100.0-19) ...
Processing triggers for systemd (229-4ubuntu4) ...
Setting up libstemmer0d:amd64 (0+svn585-1) ...
Setting up libmysqlclient20:amd64 (5.7.15-0ubuntu0.16.04.1) ...
Setting up sphinxsearch (2.2.9-1build1) ...
Adding system user `sphinxsearch' (UID 119) ...
Adding new group `sphinxsearch' (GID 125) ...
Adding new user `sphinxsearch' (UID 119) with group `sphinxsearch' ...
Not creating home directory `/var/run/sphinxsearch'.
Processing triggers for libc-bin (2.23-0ubuntu3) ...
Processing triggers for ureadahead (0.100.0-19) ...
Processing triggers for systemd (229-4ubuntu4) ...

Sphinxのテストデータベースの作成

次に、デフォルトでパッケージに付属しているサンプルデータを使用して1つのテストデータベースを作成する必要があります。これにより、後の手順でSphinx検索をテストできます。

MySQLにログインして、テストデータベースを作成し、サンプルデータベースをインポートしましょう。

$ mysql –u root –p
mysql> create database test;
Query OK, 1 row affected (0.01 sec)
mysql> SOURCE /etc/sphinxsearch/example.sql;
Query OK, 0 rows affected, 1 warning (0.01 sec)
Query OK, 0 rows affected (0.03 sec)
Query OK, 4 rows affected (0.01 sec)
Records: 4 Duplicates: 0 Warnings: 0
Query OK, 0 rows affected, 1 warning (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 10 rows affected (0.01 sec)
Records: 10 Duplicates: 0 Warnings: 0
Mysql> quit

検索用のスフィンクスの構成

Sphinxでは、インデックス、検索、ソースなどの重要な要素が定義されている環境に合わせて3つのメインブロックを編集および構成する必要があります。これらは、/ etc / sphinxsearch/sphinxにある構成ファイルsphinx.confにあります。そのためのconf.sampleファイルは、既存のサンプル構成ファイルを/ etc/sphinxsearchフォルダーにコピーする必要があります

$ cp /etc/sphinxsearch/sphinx.conf.sample /etc/sphinxsearch/sphinx.conf
$ sudo vi /etc/sphoxsearch/sphinx.conf

構成ファイルは、ブロック付きで次のようになります

sphinx.confのソースブロック

source src1
{
   type = mysql
   #SQL settings (for ‘mysql’ and ‘pgsql’ types)
   sql_host = localhost
   sql_user = roo
   tsql_pass = ubuntu
   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
}

sphinx.confのインデックスブロック

index test
{
   source = src1
   path = /var/lib/sphinxsearch/data/test
   docinfo = extern
}
Searchd block in sphinx.conf
searchd
{
   listen = 9312:sphinx #SphinxAPI port
   listen = 9306:mysql41 #SphinxQL port
   log = /var/log/sphinxsearch/searchd.log
   query_log = /var/log/sphinxsearch/testquery.log
   read_timeout = 5
   max_children = 30
   pid_file = /var/run/sphinxsearch/testsearchd.pid
   seamless_rotate = 1
   preopen_indexes = 1
   unlink_old = 1
   binlog_path = /var/lib/sphinxsearch/datatest
}

一度、スフィンクスのインデックスを作成するために必要な構成を編集します。

Sphinxでのインデックスの管理

ここでは、前の手順で編集した構成ファイルを使用してインデックスを作成します

$ sudo indexer –all
Sphinx 2.2.9-id64-release (rel22-r5006)
Copyright (c) 2001-2015, Andrew Aksyonoff
Copyright (c) 2008-2015, Sphinx Technologies Inc (https://sphinxsearch.com)
using config file '/etc/sphinxsearch/sphinx.conf'...
indexing index 'test'...
collected 4 docs, 0.0 MB
sorted 0.0 Mhits, 100.0% done
total 4 docs, 193 bytes
total 0.007 sec, 24319 bytes/sec, 504.03 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

本番環境では、インデックスを最新の状態にする必要があったため、このためのcronジョブを作成します–

$ crontab –e

ファイルの最後に以下を追加します。

# Edit this file to introduce tasks to be run by cron.
#
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
#
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').#
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
#
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h dom mon dow command
@hourly /usr/bin/indexer --rotate --config /etc/sphinxsearch/sphinx.conf –all

Sphinxサービスの開始

構成ファイルを使用してインデックスを構成したため、Sphinx構成ファイルを編集する必要がありました。デフォルトでは、Sphinxデーモンは起動せず、この/ etc / default / sphinxsearch

でファイルを編集する必要がありました。
$ vi /etc/default/sphinxsearch
#
# Settings for the sphinxsearch searchd daemon
# Please read /usr/share/doc/sphinxsearch/README.Debian for details.
#
# Should sphinxsearch run automatically on startup? (default: no)
# Before doing this you might want to modify /etc/sphinxsearch/sphinx.conf
# so that it works for you.
START=yes

以下は、スフィンクスデーモンにスターを付けるコマンドです

$ sudo systemctl restart sphinxsearch.services

sphinxsearchサービスを再起動したら、以下のコマンドを使用してステータスを確認します

$ 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 (exited) since Mon 2016-09-19 13:00:20 IST; 1h 10min ago
Docs: man:systemd-sysv-generator(8)
Tasks: 0 (limit: 512)
Memory: 0B
CPU: 0
Sep 19 13:00:20 ubuntu-16 systemd[1]: Starting LSB: Fast standalone full-text SQL search engine...
Sep 19 13:00:20 ubuntu-16 sphinxsearch[7804]: To enable sphinxsearch, edit /etc/default/sphinxsearch and set START=ye
Sep 19 13:00:20 ubuntu-16 systemd[1]: Started LSB: Fast standalone full-text SQL search engine.

スフィンクス検索のテスト

次に、MySQLインターフェイスを使用してポート9306を使用してSphinxQLに接続します。

$ mysql -h0 -P9306
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 2.2.9-id64-release (rel22-r5006)
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>

データベースで「テスト」という単語を検索します

mysql> SELECT * FROM test WHERE MATCH('test '); SHOW META;
+------+----------+------------+
| id   | group_id | date_added |
+------+----------+------------+
|    1 |        1 | 1474272578 |
|    2 |        1 | 1474272578 |
|    4 |        2 | 1474272578 |
+------+----------+------------+
3 rows in set (0.00 sec)
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| total         | 3     |
| total_found   | 3     |
| time          | 0.000 |
| keyword[0]    | test  |
| docs[0]       | 3     |
| hits[0]       | 5     |
+---------------+-------+
6 rows in set (0.00 sec)

セットアップと構成を使用することで、Sphinxをより効率的で膨大なデータを処理できる強力な検索エンジンとして構成できます。sphinx検索は数十億のドキュメントを処理でき、数千の検索クエリを実行できる数テラバイトのデータを処理できます。 2番目。


  1. Windows 7を完全に削除してUbuntuをインストールする方法は?

    最終的に純粋なLinux環境に移行することを決定した場合でも、Windows 7の破損したインストールでラップトップを活性化する場合でも、ドライブに現在インストールされているものをすべて完全に削除して、新しいオペレーティングシステムに置き換えることができます。ほとんどのUbuntuのインストール手順は、主にUbuntuをデュアルブートする方法に焦点を当てていますが、これは決して要件ではありません。古いオペレーティングシステムを同じように簡単に削除できます。まず、WindowsエクスプローラーまたはWindowsコマンドラインを使用して、保持したいものすべてをUSBメモリスティックまたはクラウド

  2. Windows 10 または Windows 11 に Ubuntu をインストールする方法

    Windows 10 または Windows 11 に Ubuntu Linux をインストールしますか?心配しないでください。あなたは正しい場所にいます。 驚くかもしれませんが、Windows オペレーティング システムに Ubuntu をインストールして実行するための唯一の普遍的な方法はありません。実際、この記事では 3 つのアプローチを紹介します。 Linux 用の Windows サブシステムで Ubuntu を実行したり (Windows で Linux コマンドを実行する方法。詳しくは以下で説明します)、USB スティックから直接実行したり、私の個人的なお気に入りの 1 つである