*

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 詳細 限界値編

関連記事

Search API詳細解説 Part6「Search API 詳細 限界値編」

みなさん、こんにちは。 前回はSearch APIの反映速度について調べてみましたが、いかがだった

記事を読む

Google App EngineからのSpreadSheetの権限変更について

Google App Engine(以下GAE)からGoogleDocsのSpreadSheetを操

記事を読む

専用Memcacheは共有Memcacheよりも本当に性能が高いのか検証する

GAEでMemcacheを利用した経験はありますでしょうか? MemcacheとはGAEで利用

記事を読む

Cloud Loggingの利用方法

はじめに 本記事はGoogle Cloud Platformの公式ページで公開されている「Goog

記事を読む

たった1つのCloud SQLインスタンスで複数のWordPressを動かす

皆様こんにちは。 前回はCloudSQLやCloud Storageを用いてWordpress

記事を読む

これで怖くない Datastore のトランザクション

”トランザクション” 聞いただけで嫌厭する方も少なくないのでは? Datastore のトランザ

記事を読む

AppEngineでTwilioを試してみた(応用編)

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

記事を読む

AppEngine Security Scan Tool

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

記事を読む

GCP愛を語る

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

記事を読む

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

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

記事を読む

PAGE TOP ↑