JavaScript で辞書型の曖昧検索の仕組みを作ってみた

MySQL なんかにある「クエリ拡張」みたいな感じで、類義語を OR 検索する仕組みが欲しいなーと思い、辞書を自分で定義して曖昧検索の仕組みを作ってみた。ソースコードは以下。

Node.js 製だが、外部 npm パッケージは一切利用していないので、node コマンドで直接実行できる。

やっていることは単純で、辞書となる類義語を連想配列で自前で構築しておき、それを愚直に match() で検索しているだけ。

例えば「音楽」というジャンルの中に「ギター」や「ベース」があり、「ギター」の中には「ストラト」とか「テレキャス」といった下位概念がある。そこで、「ギター」という文字列で検索をした時に、「ストラト」や「テレキャス」を含む文字列を検索できるようになった、というワケ。

いわゆるクエリ拡張という概念に近いモノを自前で実装したワケだが、こういうのを grep コマンド的にうまくやってくれる程良いツールが欲しいな~。