Simple Search Service는 패싯 검색 엔진을 신속하게 생성하고 자체 앱에 검색 기능을 제공하는 데 사용할 수 있는 API를 노출할 수 있는 IBM Cloud 앱입니다. 또한 이 서비스는 API를 미리 보고 자신의 데이터에 대해 테스트할 수 있을 뿐만 아니라 간단한 CMS를 통해 데이터를 관리할 수 있는 웹사이트도 생성합니다.
배포한 후에는 브라우저를 사용하여 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에 배포하는 가장 빠른 방법은 아래의 IBM Cloud에 배포 버튼을 클릭하는 것입니다.
IBM Cloud 계정이 없나요? 아직 등록하지 않은 경우 버튼을 클릭하면 IBM Cloud 계정에 등록하라는 메시지가 표시됩니다. 등록하고 이메일 주소를 확인한 후 여기로 돌아와 IBM Cloud에 배치 버튼을 다시 클릭하십시오. 새 자격 증명을 사용하면 플랫폼에 배포하고 Bluemix 및 Git을 사용하여 온라인으로 코딩할 수도 있습니다. Bluemix 작업에 대해 질문이 있는 경우 IBM Cloud Docs에서 답변을 찾아보세요.
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> '
자신의 Cloudant 계정 세부정보에 대한 USERNAME
, PASSWORD
및 HOSTNAME
자리 표시자를 바꿉니다.
그런 다음 다음을 실행하십시오.
node app.js
Simple Search Service는 Etcd를 활용하여 당사의 다른 Simple Services 중 일부를 발굴하고 활용하여 서비스를 확장하고 개선합니다.
단순 검색 서비스에서 사용할 수 있는 기타 서비스는 다음과 같습니다.
서비스 레지스트리를 활성화하려면 환경 변수 ETCD_URL
설정해야 합니다. 기본 HTTP 인증 정보를 포함하는 Etcd 인스턴스의 URL이어야 합니다.
export ETCD_URL='http://username:[email protected]'
서비스 레지스트리가 활성화된 경우 검색된 모든 서비스는 해당 서비스를 활성화 또는 비활성화할 수 있는 토글과 함께 서비스 페이지에 표시됩니다.
활성화되면 이러한 서비스는 자동으로 단순 검색 서비스에 통합됩니다.
콘텐츠를 단순 검색 서비스에 업로드했지만 이제 /search
엔드포인트만 공개적으로 사용하려는 경우 "잠금 모드"를 활성화할 수 있습니다.
단순 검색 서비스를 실행하기 전에 LOCKDOWN
이라는 환경 변수를 true
로 설정하기만 하면 됩니다.
export LOCKDOWN=true
node app.js
또는 Bluemix에서 사용자 정의 환경 변수를 설정하세요.
잠금 모드가 감지되면 계속 작동하는 /search
엔드포인트를 제외하고 모든 웹 요청에 401 Unauthorised
응답이 표시됩니다. 이렇게 하면 환경 변수를 제거하여 잠금 모드가 다시 꺼질 때까지 데이터가 수정되는 것을 방지할 수 있습니다.
잠금 모드에서 단순 검색 서비스에 액세스하려면 두 가지 환경 변수를 추가로 설정하여 기본 HTTP 인증을 활성화할 수 있습니다.
SSS_LOCKDOWN_USERNAME
SSS_LOCKDOWN_PASSWORD
이를 설정하면 일치하는 사용자 이름과 비밀번호를 제공하여 잠금 모드를 우회할 수 있습니다. UI에 액세스하면 브라우저에 이러한 세부정보를 묻는 메시지가 표시됩니다. API에 액세스하려면 요청의 일부로 사용자 이름과 비밀번호를 제공할 수 있습니다.
curl -X GET ' http://<yourdomain>/row/4dac2df712704b397f1b64a1c8e25033 ' --user < username > : < password >
단순 검색 서비스에는 제공된 UI 외부에서 데이터를 관리할 수 있는 API가 있습니다. 이를 사용하여 SIMple Search Service를 애플리케이션과 통합하세요.
검색은 GET /search
엔드포인트에서 제공됩니다.
필드 검색을 사용하여 데이터세트의 인덱스 필드를 검색하세요.
# Return any docs where colour=black
GET /search ? q=colour:black
필드 검색은 Cloudant 검색을 사용합니다.
자유 텍스트 검색을 사용하여 데이터세트의 모든 필드를 검색합니다.
# 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
엔드포인트를 사용하여 한 번에 한 행씩 새 데이터를 추가할 수 있습니다.
기존 데이터의 필드와 일치하는 키/값 쌍을 전달하는 이 엔드포인트를 호출하세요. 필수 필드가 없으며 모든 필드 유형이 적용됩니다. 데이터세트에 아직 존재하지 않는 필드가 전달되면 요청이 실패합니다.
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 라이센스 버전 2.0("라이센스")에 따라 라이센스가 부여되었습니다. 라이센스를 준수하는 경우를 제외하고는 이 파일을 사용할 수 없습니다. 다음에서 라이센스 사본을 얻을 수 있습니다.
http://www.apache.org/licenses/LICENSE-2.0
해당 법률에서 요구하거나 서면으로 동의하지 않는 한, 라이선스에 따라 배포되는 소프트웨어는 명시적이든 묵시적이든 어떠한 종류의 보증이나 조건 없이 "있는 그대로" 배포됩니다. 라이선스에 따른 허가 및 제한 사항을 관리하는 특정 언어는 라이선스를 참조하세요.