sql >> データベース >  >> RDS >> Mysql

SphinxをMySQLに統合する

    それはできません。 Sphinx(sphinxQLが有効になっている場合)は、見た目のサーバーを提供するだけです。 mysqlのように-つまり、同じ通信プロトコルを使用します-主に、スフィンクスのためだけに新しいライブラリを作成するのではなく、mysqlクライアントライブラリを再利用できます。

    それらは異なる「サーバー」です。 mysqlサーバーに接続してmysqlコマンドを実行します。 sphinxサーバーに接続してsphinxQLコマンドを実行します。

    アプリケーションwoudlは、各「サーバー」に個別に接続する必要があります。 sphinxがpostgresのようなものだったと想像してみてください。明らかに、mysqlに接続せず、postgresqlを実行できることを期待しています。

    ただし、偽のmysqlストレージエンジンであるSphinxSEがあります。これをmysqlにインストールすると、このエンジンを使用してテーブルを作成できます。次に、このテーブルに対してmysqlクエリを実行します。内部では、実行中のsphinx-serverに連絡します。したがって、mysqlにとっては、データを含むテーブルのように見えます。これは、この検索テーブルを元のデータテーブルと「結合」して、1つのmysqlクエリで結果と元のデータを取得できるため最も便利です。

    その場合、アプリケーションはsphinx自体に接続する必要はありません。 SphinxSEがあなたに代わってそれを行います。

    http://sphinxsearch.com/docs/current.html#sphinxse

    いいえ。好きなエンジンを使用して、元のデータをそのまま保持します。 Sphinxは「インデックス」を提供するだけです-元のデータを保存しません*。それ自体はデータベースではなく、高度に最適化されたインデックスを使用して高速なクエリを提供するだけです。

    基本的に、特定のクエリに一致するドキュメントの一意のIDをsphinxに要求します。次に、それらのIDを使用してデータを検索します。 SphinxAPI、sphinxSE、およびsphinxQLは、それを行うための3つの異なるメカニズムにすぎません。

    いいえ。1つのスフィンクスインスタンスで多くのインデックスをホストできます。また、インデックスには多くのソースを含めることができます。したがって、テーブルごとに1つのインデックスを作成できます。または、主にそれらを一緒に検索する場合は、1つの統合されたインデックスを作成するだけです。

    --**編集してコメントの質問に返信します:**

    おそらく、テーブルごとに1つのスフィンクスインデックスを定義します。したがって、テーブルごとにソースとインデックスのペアが必要になります。 (1つのインデックスですべてのテーブルにインデックスを付けたい場合を除いて、それも可能です。

    テーブル自体を読み取ることはできず、構成ファイルを作成することはできません。各インデックスを個別に定義する必要があります。

    いいえ。プロキシではありません。

    基本的にはい。クライアントは、mysqlサーバーに接続するのと同じ方法でクライアントに接続します。

    いいえ、不可能です。 mysql-serverに接続して、mysqlクエリを実行します。 searchdに接続して、sphinxQLクエリを実行します。

    サーバーごとに1つずつ、2つの接続。

    わからない。ファイアウォールの問題である可能性があります。




    1. 個別のCREATETABLEを使用せずにSELECTステートメントで一時テーブルを作成します

    2. なぜTRANSACTION/COMMITはPHP/MySQL(InnoDB)でパフォーマンスを大幅に向上させるのですか?

    3. ListViewコントロールチュートリアル-02

    4. Postgresql:テーブルがまだ存在しない場合にのみテーブルを作成する方法は?