Qiita/Qiita Teamの検索システムがパワーアップしました

salam! (アゼルバイジャン語でこんにちは)

迫り来る冬の気配にビクビクしている yuku_t です。

本日Qiitaの新検索システムが公開されました!ので、それによって新しく使えるようになった機能の紹介をしたいと思います。

おしながき

  1. 旧検索システムの問題点
  2. 新機能の紹介
    • Qiita、Qiita Team共通の新機能
      • 検索スニペットのハイライト表示
      • タイトル、本文、コードからの検索
      • OR検索
      • マイナス検索
    • Qiitaだけの新機能
      • 限定共有記事の検索
    • Qiita Teamだけの新機能
      • プロジェクトも検索
      • コメントからの検索
      • タグの階層絞り込み
  3. 締めの挨拶

旧検索システムの問題点

これまでのQiitaの検索システムの使い勝手はお世辞にも良いとは言えないような代物でした。問題点いくつか挙げると

  • 検索スニペットが表示されないため、ヒットした投稿を実際に表示して中身を確かめなければならない
  • ruby と検索した時に ruby タグがついているが、本文に ruby を含まない記事がヒットしない
  • 表記揺れに弱い
  • 自分の限定共有記事が検索できない
  • Qiita Teamでプロジェクトが検索できない

などの改善を要望としていただいていました。

新機能の紹介

このような問題を解決してより便利にご利用いただけるよう、お寄せいただいたご要望を踏まえつつ、いくつかの機能を追加しました。QiitaとQiita Team両方で使えるもの、その内の片方で利用できるものを順を追って紹介します。

QiitaとQiita Teamで利用できる機能

検索スニペットのハイライト表示

Screen Shot 2014-10-28 at 6.24.34 PM.png

(むしろ今まで何故無かったのかという気もしますが)検索結果にスニペットの表示及びマッチ箇所のハイライトがされるようになりました。これにより、タイトルから頑張って内容推測したり、いちいち記事を表示して中身を確かめる必要性が大きく下がりました。

タイトル、本文、コードからの検索

Screen Shot 2014-10-28 at 6.27.09 PM.png

これまでのキーワード検索はタイトルと本文を区別することができませんでしたが、 タイトルや本文だけにマッチする検索ができるようになりました。また、コードブロックに絞り込んで検索することもできます。

タイトルに絞り込んで検索するには title:キーワード のように指定します。本文とコードブロックで検索するにはそれぞれ body:キーワード code:キーワード と入力します。

キーワードが複数文字にまたがる場合は title:"Qiita Kobito" のように " で囲みます。または単純に title:Qiita title:Kobito のように続けて入力することもできます。

OR検索

2つの条件のどちらかにマッチする記事を探すために OR を使うことができるようになりました。2つのクエリを クエリ OR クエリ のように指定することで利用できます。

ただし (A OR B) C のように () を用いた入れ子の条件指定には対応していません。この場合だと (A または B) C と解釈されることになります。

マイナス検索

Screen Shot 2014-10-28 at 6.32.02 PM.png

特定の条件を満たさない記事を探すためのマイナス検索に対応しました。例えば kobito -title:qiita は「タイトルもしくは本文にkobitoを含むが、タイトルにはqiitaを含まない記事」がマッチします。

Qiitaでのみ適用される機能

限定共有記事の検索

Screen Shot 2014-10-28 at 6.37.11 PM.png

Qiitaにログインした状態で検索を実行すると、自分の限定共有記事が検索にヒットするようになりました。 他のユーザが書いたものはヒットしません。限定共有状態の記事はタイトルの先頭に鍵のアイコンが表示されます。

Qiita Teamで利用できる機能

プロジェクトも検索

これまでQiita Teamで検索すると、通常の記事だけがヒットしていましたが、プロジェクトも検索結果に含まれるようになりました。

コメントからの検索

Screen Shot 2014-10-28 at 7.21.59 PM.png

Qiita Teamでは各投稿及びプロジェクトにつけられたコメントも検索対象となっています。コメントがヒットしていた場合は、吹き出しアイコンが表示されます。

コメントに絞って検索するには comment:キーワード と指定します。

タグの階層絞り込み

Screen Shot 2014-10-28 at 6.46.01 PM.png

Qiita Teamではタグの内部に / を含めることで階層化することができます。タグ検索クエリを / で終えることで、その階層以下のタグが紐づく投稿、という意味になります。

例えば ゆるふわ -tag:日報/ だと「日報以外でゆるふわを含む記事」という意味になります。

締めの挨拶

以上、駆け足でしたが新しい検索機能の紹介でした。ちなみにバックエンドにはElasticsearchを使っています。今回の改修で得た知見は近いうちにqiita.comで共有したいと思うので、そちらもご期待ください。

Qiitaでは今後も積極的に改善を進めていきますので、検索機能に限らず機能要望などございましたら、画面右下のご意見フォームからお寄せください。

Goodbye(アゼルバイジャン語…に限らず様々な言語でさようなら)