目次 このページのソースコードを表示

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],
                ...
            ]

ダウンロード

以下の二つのファイルを同じディレクトリに置いてください.

NOTE

SearchEngineは, ContentsPlanet(コンテンツ管理システム) に導入され, メンテナンスは ContentsPlanet プロジェクト内で行われることになりました.

使用例

本モジュール"SearchEngine"の使用例は, 本ウェブページを参考にしてください. 本ウェブページの検索機能に, "SearchEngine"が使用されています.

検索してみる

参考文献

「https://contentsviewer.work/Master/Library/PHP/SearchEngine/SearchEngine」から取得