*

Search API詳細解説 Part4「Search API 詳細 検索性能編」

公開日: : 最終更新日:2015/04/17 投稿者: GAE

Search API詳細解説シリーズ

タイトル
Part1 Search API 概要説明
Part2 Search APIの使い方 登録・削除編
Part3 Search APIの使い方 検索編
Part4 Search API 詳細 検索性能編(このページです)
Part5 Search API 詳細 反映速度編
Part6 Search API 詳細 限界値編

みなさん、こんにちは。
前回のSearch API詳細解説 Part3「Search APIの使い方 検索編」までで、Search APIの実装方法については理解できたのではないかと思います。
もしまだお読みで無い方は本編はある程度前提にしてますので、是非第一回から……
今回からは、Search APIの性能について検証していきたいと思います。

性能を検証する最初の機能は、『検索』です。
Search APIのFieldTypeは全部で6つありますが、今回検証するのはFieldType.TEXTに関する検索性能を調べてみましょう。

まず、FieldType.TEXTはプレーンテキストとしてデータを保持しますが、単語単位で検索が可能なフィールドになっています。
ですが、『単語単位』というのは曖昧です。
明確に単語単位のロジックが文書化されているわけではありませんので、実際にいろいろと検索してみて検索可能な基準を見つけたいと思います。

検索性能を調べるためのデータを用意する

検索対象Documentは以下のようになっています。

Document ID textField 備考
1 t 半角英字。一文字。
2 test tarou 半角英字。半角スペース有り。
3 test tarou 半角英字。全角スペース有り。
4 test_tarou 半角英字。アンダースコア有り。
5 test-tarou 半角英字。ハイフン有り。
6 testtarou 半角英字。
7 testTarou 半角英字。
8 test@example.co.jp 半角英字。一般的なメールアドレス形式。
9 1 半角数字。一文字
10 10000 半角数字。
11 10,000 半角数字。カンマ区切り形式。
12 10000 全角数字。
13 test10000 半角英字数字。
14 test 10000 半角英字数字。
15 半角カナ。一文字
16 テスト太郎 半角カナ・全角漢字。
17 テストタロウ 半角カナ。
18 全角カナ。一文字
19 テスト太郎 全角カナ漢字。
20 テスト 太郎 全角カナ漢字。半角スペース有り。
21 テスト 太郎 全角カナ漢字。全角スペース有り。
22 全角漢字。一文字
23 佐藤太郎 全角漢字。
24 てすとたろう 全角かな。
25 test tarou 全角英字。

DocumentはFieldType.TEXTのフィールド、textFieldを一つ持っているだけのデータです。
半角・全角の英字・数字・カナ、全角の英字・数字・かな・漢字、よく見かける記号(@やハイフン)が設定されているデータです。

 

 検索してみた

全部で31パターンの検索条件を試してみました。
結果は以下の表になっています。

パターン 検索条件 検索結果件数 検索結果のFieldの値
1 textField=t 1 t
2 textField=te 0
3 textField=tes 0
4 textField=test 6 test tarou
test tarou
test-tarou
test@example.co.jp
test 10000
test tarou
5 textField=tarou 4 test tarou
test tarou
test-tarou
test tarou
6 textField=Tarou 4 test tarou
test tarou
test-tarou
test tarou
7 textField=TAROU 4 test tarou
test tarou
test-tarou
test tarou
8 textField=T 1 t
9 textField=st ta 0
10 textField=co 1 test@example.co.jp
11 textField=co.jp 1 test@example.co.jp
12 textField=. Index内にある全Document(25件)
13 textField=@
14 textField=- SearchQueryException発生。
Unable to parse query.
15 textField=,
16 textField=_ 0
17 textField=1 1 1
18 textField=10 0
19 textField=10, SearchQueryException発生。
Unable to parse query.
20 textField=10,0
21 textField=10,000
22 textField=10000 4 test 10000
10,000
10000
10000
23 textField=10000 4 test 10000
10,000
10000
10000
24 textField=テ 2
25 textField=テスト 5 テストタロウ
テスト太郎
テスト太郎
テスト 太郎
テスト 太郎
26 textField=ストタロ 0
27 textField=太郎 5 テスト太郎
テスト太郎
テスト 太郎
テスト 太郎
佐藤太郎
28 textField=太 1
29 textField=ト太 0
30 textField=てすと 1 てすとたろう
31 textField=佐藤 1 佐藤太郎

31パターンをざっと見ただけでも、検索に引っかかる、引っかからないの傾向がだいぶ分かるかと思います。
半角・全角スペース、ハイフン(-)、ピリオド(.)で区切った前後の文字列は文字の種類を問わず、単語として認識されているようですね。(パターン4,5,6,7,10,11,23,24,26,28)
英字の場合は、区切りが明確でなければ単語扱いされないようですが、漢字・ひらがな・カタカナの場合は区切り文字が無くともちゃんと単語を認識しているようです。(パターン26,28)
検証結果を見る限り、Search APIのFieldType.TEXTのデータに対しての検索については、半角や全角、大文字・小文字はあまり関係無いようですね。(パターン4,5,6,7,8,23,24,25,26,28)
パターン14や15のように、ハイフン(-)やカンマ(,)を検索条件にしてしまうと、Exceptionを投げるのは驚きでした。(エスケープしてあげないとダメ?)
また、記号の話で言えば、パターン12,13の場合は、Index内の全てのDocumentが返って来てしまったので、記号を検索条件にする場合は少し注意が必要ですね。
これらのルールは恐らくGoogleのその他の検索部分(Documentの検索やメールの検索等)でも同じように動作してそうです。

今回の性能検証はここまでです。
次回はSearch APIのDocumentの登録・削除をした時の応答速度・Indexへの反映遅延について、検証してみます。

Search API詳細解説シリーズ

タイトル
Part1 Search API 概要説明
Part2 Search APIの使い方 登録・削除編
Part3 Search APIの使い方 検索編
Part4 Search API 詳細 検索性能編(このページです)
Part5 Search API 詳細 反映速度編
Part6 Search API 詳細 限界値編

関連記事

たったの15分でできるGAE/GO入門 標準APIその1

知っておけば必ず開発が楽になる! GAE/Go入門の本連載ですが、前回は第一弾として「PaaS最前

記事を読む

AppEngineでTwilioを試してみた(基本編)

AppEngineでTwilioを試してみた(基本編) AppEngineでTwilioを試し

記事を読む

GCP愛を語る

RGCP(GCP好き以外お断り) 技術的な話ばかりの中のAdventCalendarですが、本

記事を読む

GAリリース記念!!今更だけどGAE Flexible Environmentのチュートリアルを試してみた!

GAE Flexible Environment(以下FE)のGA(General Availa

記事を読む

GAEのスケーリング 前編 <仕組みについて>

今回は、こちらの公式ドキュメントをもとに、GAEのスケーリングの仕組みと最適化のやり方について紹介し

記事を読む

Search API詳細解説 Part5「Search API 詳細 反映速度編」

Search API詳細解説シリーズ タイトル Part1Search API 概要説明

記事を読む

GAE負荷テスト その2「無料で何PVまで表示できるのか試してみた」

その1のアップからだいぶ日が経ってしまい、いつの間にか年すら変わっていましたね。。。 " GA

記事を読む

Google App Engine Modules のScalingを試す

みなさんこんにちは。 前回の記事では、GAE Modulesの簡単なサンプルを配備し、動作を確

記事を読む

AppEngine Security Scan Tool

AppEngine Security Scan Toolが利用出来るようになりました。ついては、GA

記事を読む

PageSpeedの動作を検証

皆さん、こんにちは。 突然ですが、皆さんはPageSpeedというサービスをご存知でしょうか?

記事を読む

PAGE TOP ↑