全文検索こんにちは!!こんにちは!!検索技術勉強会に参加する程度には検索に詳しいmoriyamaです。最近チーム内でSolrCloudの簡単な操作方法をレクチャーしました。ZooKeeperとSolrの起動方法や、SolrCloudステータス確認といった、基礎的な運用だけなんですけどね。考えると、検索の仕組みをチーム内に共有していなかったので、それも兼ねて今回はざっくり解説していこうと思います!そもそも『検索』とは?Wikipedia先生によると、下記のように書かれています。検索とは、データの集合の中から目的のデータを探し出すことであるデータの集合(=インデックス)から条件(=クエリ)を指定して、目的のデータを探し出すわけですね!簡単なテキストデータであればUNIXコマンドのgrepで良いのですが、ファイルの先頭から順次走査して条件比較するため、検索対象のファイルが多くなるほど検索速度は低下します。そこで検索エンジンは『転置インデックス』を使って、探索の高速化を実現しています。転置インデックスの仕組み下記のようなドキュメントがあったとします。一般的なリレーショナルデータベースは、IDをベースにインデックスを構築すると思います。転置インデックスは名の通り『転置』するので、下記のように単語やワードをベースにインデックス構築します。3こうすることで、各ワードで元のドキュメントにリレーションを張ることができました。それでは下記のような検索クエリを実行したとしましょう。仮名や略語といった応用的な場面で検索するには少し手を加えてやる必要があります。その第一歩として、『辞書』の活用が容易ですね。例として、「いこーよ」というワードで考えてみましょう。何も考えずにmecabで形態素解析を実施すると、下記のようになります。EOSつまり、「いこ」「ー」「よ」という単語に分かれてしまうわけですね!以前も記事にしたのですが、固有名詞は意図しないトークンに分割されやすいです。厳密には意味が異なるけれども、と同じ意味で検索させたい場合もありますよね?例えば「いこレポ」も「いこーよ」で検索した際にhitさせたいという需要はあると思います(あるよね?そこで使うのが同義語辞書です。(検索エンジンにも依りますが)同義語は双方向、片方向など、単語単語で細かい設定ができます。まとめ『転置インデックス』と『辞書』を押さえておけば、まず問題ありません!検索にhitする/しないの原因はほとんどの場合、上記の2点を確認すれば解決するパターンが多いです。終わりが見えませんね!検索はとても奥が深いですし、自分もまだまだ勉強していきたいです。2018、1日目の記事です。Andro...2018-08-03施設詳細のAMPページを公開しました。