Simple Search Service は、ファセット検索エンジンを迅速に作成し、独自のアプリに検索を組み込むために使用できる API を公開できる IBM Cloud アプリです。このサービスでは、API をプレビューして独自のデータに対してテストしたり、シンプルな CMS を介してデータを管理したりできる Web サイトも作成します。
デプロイしたら、ブラウザを使用して CSV または TSV データをアップロードします。ファセット化するフィールドを指定すると、サービスが残りの部分を処理します。
アプリケーションは次の Bluemix サービスを使用します。
データがアップロードされると、UI を使用して、統合された CMS 経由でデータを参照および管理できるようになります。さらに、CORS 対応の API エンドポイントは<your domain name>/search
で利用できます。このエンドポイントは、Lucene 全文インデックス作成のための Cloudant の組み込み統合を利用します。得られるものは次のとおりです。
?q=colour:black+AND+brand:fender
?q=black+fender+strat
?q=black+fender+strat&bookmark=<xxx>
?sort=color
または?sort=-color
(降順)これを残りの API とともに使用して、Simple Search Service をアプリに統合できます。完全な API リファレンスについては、ここをクリックしてください。
このアプリは、Node.js と Cloudant を使用して Bluemix 上でアプリをいかに簡単に構築できるかを示すデモですが、複数の Simple Search Service ノードの追加に応じて拡張できる成熟した検索 API も提供します。実際、同様のアーキテクチャにより、Bluemix サービス カタログの検索エクスペリエンスが強化されています。
Simple Search Service の使用方法の詳細については、こちらをご覧ください。
このアプリケーションを Bluemix にデプロイする最も速い方法は、下の「Deploy to IBM Cloud」ボタンをクリックすることです。
IBM Cloud アカウントをお持ちでない場合は、まだサインアップしていない場合は、ボタンをクリックすると、IBM Cloud アカウントにサインアップするように求められます。サインアップして電子メール アドレスを確認し、ここに戻って[Deploy to IBM Cloud]ボタンを再度クリックします。新しい認証情報を使用すると、プラットフォームにデプロイしたり、Bluemix や Git を使用してオンラインでコーディングしたりできるようになります。 Bluemix での作業について質問がある場合は、IBM Cloud ドキュメントで回答を見つけてください。
IBM Cloud への手動デプロイメントにはgit
と Cloud Foundry CLI が必要です
$ git clone https://github.com/ibm-watson-data-lab/simple-search-service.git
$ cf create-service cloudantNoSQLDB Lite simple-search-service-cloudant-service
$ cd simple-search-service
$ cf push
このリポジトリのクローンを作成し、 npm install
実行して、アプリの実行に必要な Node.js ライブラリを追加します。
次に、Cloudant URL を含む環境変数をいくつか作成します。
# Cloudant URL
export SSS_CLOUDANT_URL= ' https://<USERNAME>:<PASSWORD>@<HOSTNAME> '
USERNAME
、 PASSWORD
、およびHOSTNAME
のプレースホルダーを自分の Cloudant アカウントの詳細に置き換えます。
次に、次を実行します。
node app.js
Simple Search Service は、Etcd を利用して他の Simple Services を検出および利用し、サービスを拡張および改善します。
簡易検索サービスで利用できるその他のサービスは次のとおりです。
サービス レジストリを有効にするには、環境変数ETCD_URL
設定する必要があります。これは、基本的な HTTP 認証情報を含む Etcd インスタンスの URL である必要があります。
export ETCD_URL='http://username:[email protected]'
サービス レジストリが有効になっている場合、検出されたサービスはすべて [サービス] ページに表示され、これらのサービスを有効または無効に切り替えることができます。
有効にすると、これらのサービスは自動的に Simple Search Service に統合されます。
コンテンツを Simple Search Service にアップロードした後、 /search
エンドポイントのみを公開したい場合は、「ロックダウン モード」を有効にすることができます。
Simple Search Service を実行する前に、 LOCKDOWN
という環境変数をtrue
に設定するだけです。
export LOCKDOWN=true
node app.js
または、Bluemix でカスタム環境変数を設定します。
ロックダウン モードが検出されると、/search エンドポイントを除き、すべての Web リクエストは401 Unauthorised
応答を受け取りますが、 /search
エンドポイントは引き続き動作します。これにより、環境変数を削除してロックダウン モードが再びオフになるまで、データが変更されるのを防ぎます。
ロックダウン モード中に簡易検索サービスにアクセスしたい場合は、さらに 2 つの環境変数を設定することで、基本的な HTTP 認証を有効にできます。
SSS_LOCKDOWN_USERNAME
SSS_LOCKDOWN_PASSWORD
これらを設定すると、一致するユーザー名とパスワードを提供することでロックダウン モードをバイパスできます。 UI にアクセスすると、ブラウザーによってこれらの詳細の入力が求められます。 API にアクセスしたい場合は、リクエストの一部としてユーザー名とパスワードを指定できます。
curl -X GET ' http://<yourdomain>/row/4dac2df712704b397f1b64a1c8e25033 ' --user < username > : < password >
Simple Search Service には、提供された UI の外部でデータを管理できる API があります。これを使用して、SIMple Search Service をアプリケーションと統合します。
検索はGET /search
エンドポイントによって提供されます。
フィールド検索を使用して、データセット内のインデックス付きフィールドのいずれかを検索します。
# Return any docs where colour=black
GET /search ? q=colour:black
フィールド検索では Cloudant Search を使用します。
フリーテキスト検索を使用して、データセット内のすべてのフィールドを検索します。
# Return any docs 'black' is mentioned
GET /search ? q=black
bookmark
パラメーターを使用して、結果の次のページを取得します。これは、 /search
エンドポイントからのすべての結果で提供されます (以下の応答例を参照)。これを次の検索 (同じクエリ パラメーターを使用) に渡して、次の結果セットを返します。
# Return the next set of docs where 'black' is mentioned
GET /search ? q=black & bookmark= < ... >
limit
パラメーターを使用して、返される結果の量を変更することができます。
# Return the next set of docs where 'black' is mentioned, 10 at a time
GET /search ? q=black & bookmark= < ... >& limit=10
すべての検索は同じように応答します。
{
"total_rows": 19, // The total number of rows in the dataset
"bookmark": "g1AAAA...JjFkA0kLVvg", // bookmark, for pagination
"rows": [ // the rows returned in this response
{ ... },
{ ... },
{ ... },
{ ... },
{ ... },
{ ... },
{ ... },
{ ... },
{ ... },
{ ... },
{ ... },
{ ... },
{ ... },
{ ... },
{ ... },
{ ... },
{ ... },
{ ... },
{ ... }
],
"counts": { // counts of the fields which were selected as facets during import
"type": {
"Black": 19
}
},
"_ts": 1467108849821
}
各行の_id
フィールドにある一意の ID を使用して、特定の行を返すことができます。これは、 GET /row/:id
エンドポイントを使用して行われます。
GET /row/44d2a49201625252a51d252824932580
これにより、この特定の行の JSON 表現が返されます。
POST /row
エンドポイントを使用して、新しいデータを一度に 1 行追加できます。
このエンドポイントを呼び出して、既存のデータのフィールドに一致するキーと値のペアを渡します。必須フィールドはなく、すべてのフィールド タイプが適用されます。データセットに存在しないフィールドが渡された場合、リクエストは失敗します。
POST /row -d ' field_1=value_1&field_n=value_n '
新しい行の_id
が自動生成され、応答のid
フィールドで返されます。
{
"ok" : true ,
"id" : " 22a747412adab2882be7e38a1393f4f2 " ,
"rev" : " 1-8a23bfa9ee2c88f2ae8dd071d2cafd56 "
}
終了データはPUT /row/:id
エンドポイントを使用して更新できます。
このエンドポイントを呼び出して、既存のデータのフィールドに一致するキー/値ペアを渡します。キー/値ペアには_id
パラメーターも含める必要があります。必須フィールドはなく、すべてのフィールド タイプが適用されます。データセットに存在しないフィールドが渡された場合、リクエストは失敗します。
注:更新時に提供されていないフィールドは削除されます。フィールドが変更されていない場合でも、その値を保持するために常にフィールドを指定する必要があります。
応答は行を追加する場合と似ていますが、ドキュメントのリビジョン番号が増加していることに注意してください。
{
"ok" : true ,
"id" : " 22a747412adab2882be7e38a1393f4f2 " ,
"rev" : " 2-6281e0a21ed461659dba6a96d3931ccf "
}
各行の_id
フィールドにある一意の ID を使用して、特定の行を削除できます。これは、 DELETE /row/:id
エンドポイントを使用して行われます。
DELETE /row/44d2a49201625252a51d252824932580
応答は行を編集した場合と似ていますが、ドキュメントのリビジョン番号が再び増加していることに注意してください。
{
"ok" : true ,
"id" : " 22a747412adab2882be7e38a1393f4f2 " ,
"rev" : " 3-37b4f5c715916bf8f90ed997d57dc437 "
}
プログラムですべてのデータを削除し、インデックスを初期化するには
POST /initialize
次の構造を定義するschema
プロパティをペイロードに含めます
{ "fields": [
{
"name": "id",
"type": "string",
"example": "example_id",
"facet": true
},
{
"name": "score",
"type": "number",
"example": 8,
"facet": false
},
{
"name": "tags",
"type": "arrayofstrings",
"example": "example_tag_1,example_tag_2",
"facet": true
}
]
}
> This example defines a schema containing three fields of which two will be enabled for faceted search.
有効な値:
name
: 任意の文字列type
: number
、 boolean
、 string
、 arrayofstrings
(例: val1,val2,val3
)example
: このtype
の任意の有効な値facet
: true
またはfalse
https://github.com/IBM/metrics-collector-client-node#privacy-notice を参照してください。
手動デプロイの場合、 require("metrics-tracker-client").track();
を削除することでデプロイメント追跡を無効にできます。 app.js
メインサーバーファイルの最後から。
著作権 2018 IBM クラウド データ サービス
Apache License バージョン 2.0 (「ライセンス」) に基づいてライセンスされています。ライセンスに準拠する場合を除き、このファイルを使用することはできません。ライセンスのコピーは次の場所で入手できます。
http://www.apache.org/licenses/LICENSE-2.0
適用される法律で義務付けられている場合または書面による同意がない限り、ライセンスに基づいて配布されるソフトウェアは、明示または黙示を問わず、いかなる種類の保証や条件もなく、「現状のまま」で配布されます。ライセンスに基づく許可と制限を規定する特定の言語については、ライセンスを参照してください。