PHPで動くあいまい検索エンジン
データベースを使わないで, あいまい検索を実現するPHPライブラリ
はじめに
PHPでアプリケーションを作成しているとき, 特に文章の管理や表示を扱うアプリケーションでは, 文章の検索機能が欲しくなります. また, ユーザは検索したいキーワードがあいまいで, 完全一致でヒットすることはまれだと思われます.
本稿では, PHPで動作するあいまい検索エンジンを紹介します.
実装にあたり, 以下のページを参考にしました.
また本エンジンは, データベース(MySQLなど)を使用しません.
使い方
検索エンジンでは, Indexに登録するIndexerと, Indexからqueryに基づいて検索するSearcherで構成されています[1].
Indexに登録する方法と, 検索する方法を説明します.
Indexに登録する方法
SearchEngine.php
を読み込みます.
require_once("SearchEngine.php");
indexファイルを読み込みます.
$index = new SearchEngine\Index(); $index = $index->Load('.index');
indexに登録します. 第一引数は, 対象のインデックス. 第二引数は, id. 第三引数は, 検索対象文字列です.
SearchEngine\Indexer::RegistIndex($index, 'tokyo-weather', '東京の天気');
indexファイルに変更を反映します.
$index->Apply('.index');
検索する方法
SearchEngine.php
を読み込みます.
require_once("SearchEngine.php");
indexファイルを読み込みます.
$index = new SearchEngine\Index(); $index = $index->Load('.index');
検索します.
$suggestions = SearchEngine\Searcher::Search($index, '東京 天気');
$suggestions
は, ヒットしたidとそのスコアが格納されています.
[ ['id' => 'tokyo-weather', 'score' => 0.8], ... ]
ダウンロード
以下の二つのファイルを同じディレクトリに置いてください.
- https://github.com/ContentsViewer/ContentsPlanet/blob/master/Module/SearchEngine.php
- https://github.com/ContentsViewer/ContentsPlanet/blob/master/Module/BinarySearch.php
SearchEngineは, ContentsPlanet(コンテンツ管理システム) に導入され, メンテナンスは ContentsPlanet プロジェクト内で行われることになりました.
使用例
本モジュール"SearchEngine"の使用例は, 本ウェブページを参考にしてください. 本ウェブページの検索機能に, "SearchEngine"が使用されています.
検索してみる