Sphinx PHPは、開発者が強力な検索機能を実現するのに役立つ効率的なフルテキスト検索エンジンです。開発プロセス中に、複数のテーブルで共同検索を実施し、検索結果を組み合わせて表示する必要があることがよくあります。この記事では、Sphinx PHPを使用してこの機能を実装し、関連するコードの例を提供する方法について説明します。
まず、Sphinx PHPをインストールする必要があります。 Composerを依存関係管理ツールとして使用すると、プロジェクトのComposer.jsonファイルに次の依存関係を追加できます。
{
"必要とする": {
「sphinxsearch/sphinx-php」: "^2.2"
}
}
インストールが完了したら、 Composer Installコマンドを実行して依存関係を読み込みます。
マルチテーブルジョイント検索を実行するには、最初にSphinxのインデックスを構成する必要があります。 2つのテーブルがあるとします。1つはユーザーテーブルで、ユーザーの名前と年齢を含む。もう1つは製品のテーブルで、製品の名前と説明が含まれています。これら2つのテーブルで検索し、結果をマージできるようにしたいと考えています。
Sphinx構成ファイルでは、最初にユーザーテーブルと製品テーブルに対応する2つのインデックスを定義します。例の構成は次のとおりです。
index users_index {
source = users
path =/var/data/users
...
}
<p>index dexter_index {<br>
SOURCE =製品<br>
PATH =/var/data/products<br>
...<br>
}<br>
次に、 searchd構成のマージインデックスを定義します。
indexMy_index {
type =分散
local = users_index
local = products_index
}
このようにして、 my_indexと呼ばれる共同インデックスを作成します。これには、2つのローカルインデックスが含まれています: users_indexとproducts_index 。
次に、Sphinx PHPを介してフェデレーション検索を実行できます。まず、Sphinxクライアントインスタンスを作成し、Sphinxサーバーに接続する必要があります。
require_once 'vendor/autoload.php'; <p>Sphinx \ sphinxclientを使用します。</p> <p>// Sphinxクライアントインスタンスを作成します<br> $ client = new SphinxClient();</p> <p>// Sphinxサーバーに接続します<br> $ client-> setServer( '127.0.0.1'、9312);<br>
その後、クエリオプションを設定して、検索操作を実行できます。
//クエリオプションを設定$クライアント - > setMatchMode(sphinxClient :: sph_match_all); //完全にに$ client-> setlimits(0、10); //戻るされた結果の数を設定します<p>//検索操作を実行します<br>
$ result = $ client-> query( 'keyword'、 'my_index');</p>
<p>//検索結果を処理します<br>
if($ result!== false){<br>
if($ result ['total']> 0){<br>
foreach($ result ['matches'] as $ mate){<br>
echo $ match ['id']。 ':'。 $ match ['weight']。 "\ n";<br>
}<br>
} それ以外 {<br>
エコー '一貫性のあるは見つかりませんでした。 ';<br>
}<br>
} それ以外 {<br>
Echo '検索に失敗しました。 ';<br>
}<br>
上記の例は、スフィンクスPHPを介してマルチテーブルのジョイント検索と結果のマージを実装する方法を示しています。インデックスを合理的に配置し、Sphinx PHPが提供する検索機能を使用することにより、開発者は複数のデータテーブルで共同クエリを簡単に実行し、検索結果の返されることを最適化できます。この記事があなたの開発作業に役立つことを願っています。