Simple Search Service ist eine IBM Cloud-App, mit der Sie schnell eine facettenreiche Suchmaschine erstellen und eine API bereitstellen können, mit der Sie die Suche in Ihre eigenen Apps integrieren können. Der Dienst erstellt außerdem eine Website, auf der Sie eine Vorschau der API anzeigen, sie mit Ihren eigenen Daten testen und Ihre Daten über ein einfaches CMS verwalten können.
Verwenden Sie nach der Bereitstellung den Browser, um CSV- oder TSV-Daten hochzuladen. Geben Sie die zu facettierenden Felder an, und der Dienst erledigt den Rest.
Die Anwendung nutzt diese Bluemix-Dienste:
Sobald die Daten hochgeladen sind, können Sie über die Benutzeroberfläche Ihre Daten über das integrierte CMS durchsuchen und verwalten. Darüber hinaus ist ein CORS-fähiger API-Endpunkt unter <your domain name>/search
verfügbar. Der Endpunkt nutzt die integrierte Integration von Cloudant für die Lucene-Volltextindizierung. Folgendes erhalten Sie:
?q=colour:black+AND+brand:fender
?q=black+fender+strat
?q=black+fender+strat&bookmark=<xxx>
?sort=color
oder ?sort=-color
für absteigendSie können dies zusammen mit dem Rest der API verwenden, um den Simple Search Service in Ihre Apps zu integrieren. Für eine vollständige API-Referenz klicken Sie hier.
Während es sich bei dieser App um eine Demo handelt, die zeigt, wie einfach Sie mit Node.js und Cloudant eine App auf Bluemix erstellen können, bietet sie auch eine ausgereifte Such-API, die durch das Hinzufügen mehrerer Simple Search Service-Knoten skaliert werden kann. Tatsächlich basiert das Sucherlebnis im Bluemix-Dienstkatalog auf einer ähnlichen Architektur.
Eine detailliertere Anleitung zur Verwendung des Simple Search Service finden Sie hier.
Der schnellste Weg, diese Anwendung in Bluemix bereitzustellen, besteht darin, unten auf die Schaltfläche „In IBM Cloud bereitstellen“ zu klicken.
Sie haben kein IBM Cloud-Konto? Wenn Sie dies noch nicht getan haben, werden Sie aufgefordert, sich für ein IBM Cloud-Konto anzumelden, wenn Sie auf die Schaltfläche klicken. Registrieren Sie sich, bestätigen Sie Ihre E-Mail-Adresse, kehren Sie dann hierher zurück und klicken Sie erneut auf die Schaltfläche „In IBM Cloud bereitstellen“ . Mit Ihren neuen Anmeldeinformationen können Sie auf der Plattform bereitstellen und auch online mit Bluemix und Git programmieren. Wenn Sie Fragen zur Arbeit in Bluemix haben, finden Sie Antworten in den IBM Cloud-Dokumenten.
Für die manuelle Bereitstellung in IBM Cloud sind git
und die Cloud Foundry-CLI erforderlich
$ 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
Klonen Sie dieses Repository und führen Sie dann npm install
aus, um die Node.js-Bibliotheken hinzuzufügen, die zum Ausführen der App erforderlich sind.
Erstellen Sie dann einige Umgebungsvariablen, die Ihre Cloudant-URL enthalten.
# Cloudant URL
export SSS_CLOUDANT_URL= ' https://<USERNAME>:<PASSWORD>@<HOSTNAME> '
Ersetzen der Platzhalter USERNAME
, PASSWORD
und HOSTNAME
durch die Details Ihres eigenen Cloudant-Kontos.
Führen Sie dann Folgendes aus:
node app.js
Der Simple Search Service nutzt Etcd, um einige unserer anderen Simple Services zu entdecken und zu nutzen, um den Service zu erweitern und zu verbessern.
Weitere Dienste, die dem Simple Search Service zur Verfügung stehen, sind:
Um die Service Registry zu aktivieren, muss die Umgebungsvariable ETCD_URL
festgelegt werden. Dies sollte die URL Ihrer Etcd-Instanz sein, einschließlich aller grundlegenden HTTP-Authentifizierungsinformationen
export ETCD_URL='http://username:[email protected]'
Wenn die Dienstregistrierung aktiviert ist, werden alle erkannten Dienste auf der Seite „Dienste“ angezeigt, mit einem Schalter zum Aktivieren oder Deaktivieren dieser Dienste.
Sobald diese Dienste aktiviert sind, werden sie automatisch in den Simple Search Service integriert.
Wenn Sie Ihre Inhalte in den Simple Search Service hochgeladen haben, nun aber nur der Endpunkt /search
öffentlich verfügbar sein soll, können Sie den „Sperrmodus“ aktivieren.
Setzen Sie einfach eine Umgebungsvariable namens LOCKDOWN
auf true
bevor Sie den Simple Search Service ausführen:
export LOCKDOWN=true
node app.js
oder legen Sie eine benutzerdefinierte Umgebungsvariable in Bluemix fest.
Wenn der Sperrmodus erkannt wird, erhalten alle Webanfragen die Antwort 401 Unauthorised
, mit Ausnahme des /search
Endpunkts, der weiterhin funktioniert. Dadurch wird verhindert, dass Ihre Daten geändert werden, bis der Sperrmodus durch Entfernen der Umgebungsvariablen wieder ausgeschaltet wird.
Wenn Sie im Sperrmodus Zugriff auf den Simple Search Service erhalten möchten, können Sie die grundlegende HTTP-Authentifizierung aktivieren, indem Sie zwei weitere Umgebungsvariablen festlegen:
SSS_LOCKDOWN_USERNAME
SSS_LOCKDOWN_PASSWORD
Wenn diese festgelegt sind, können Sie den Sperrmodus umgehen, indem Sie einen passenden Benutzernamen und ein passendes Passwort angeben. Wenn Sie auf die Benutzeroberfläche zugreifen, werden Sie von Ihrem Browser zur Eingabe dieser Details aufgefordert. Wenn Sie auf die API zugreifen möchten, können Sie im Rahmen Ihrer Anfrage den Benutzernamen und das Passwort angeben:
curl -X GET ' http://<yourdomain>/row/4dac2df712704b397f1b64a1c8e25033 ' --user < username > : < password >
Der Simple Search Service verfügt über eine API, mit der Sie Ihre Daten außerhalb der bereitgestellten Benutzeroberfläche verwalten können. Nutzen Sie dies, um den SIMple Search Service in Ihre Anwendungen zu integrieren.
Die Suche wird vom GET /search
-Endpunkt bereitgestellt.
Durchsuchen Sie jedes der indizierten Felder in Ihrem Datensatz mithilfe der Feldsuche.
# Return any docs where colour=black
GET /search ? q=colour:black
Die Feldsuche verwendet Cloudant Search.
Durchsuchen Sie alle Felder in Ihrem Datensatz mithilfe der Freitextsuche.
# Return any docs 'black' is mentioned
GET /search ? q=black
Rufen Sie mithilfe des bookmark
die nächste Ergebnisseite ab. Dies wird in allen Ergebnissen vom /search
Endpunkt bereitgestellt (siehe Beispielantworten unten). Übergeben Sie dies an die nächste Suche (mit denselben Abfrageparametern), um die nächsten Ergebnisse zurückzugeben.
# Return the next set of docs where 'black' is mentioned
GET /search ? q=black & bookmark= < ... >
Mit dem Parameter limit
ist es möglich, die Anzahl der zurückgegebenen Ergebnisse zu ändern.
# Return the next set of docs where 'black' is mentioned, 10 at a time
GET /search ? q=black & bookmark= < ... >& limit=10
Alle Suchanfragen reagieren auf die gleiche Weise.
{
"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
}
Eine bestimmte Zeile kann mithilfe ihrer eindeutigen ID zurückgegeben werden, die im Feld _id
jeder Zeile zu finden ist. Dies erfolgt mithilfe des GET /row/:id
-Endpunkts.
GET /row/44d2a49201625252a51d252824932580
Dadurch wird die JSON-Darstellung dieser bestimmten Zeile zurückgegeben.
Mit dem POST /row
-Endpunkt können neue Daten zeilenweise hinzugefügt werden.
Rufen Sie diesen Endpunkt auf und übergeben Sie Schlüssel/Wert-Paare, die mit den Feldern in den vorhandenen Daten übereinstimmen. Es gibt KEINE Pflichtfelder und alle Feldtypen werden erzwungen. Die Anfrage schlägt fehl, wenn Felder übergeben werden, die noch nicht im Datensatz vorhanden sind.
POST /row -d ' field_1=value_1&field_n=value_n '
Die _id
der neuen Zeile wird automatisch generiert und im id
Feld der Antwort zurückgegeben.
{
"ok" : true ,
"id" : " 22a747412adab2882be7e38a1393f4f2 " ,
"rev" : " 1-8a23bfa9ee2c88f2ae8dd071d2cafd56 "
}
Bestehende Daten können mit dem PUT /row/:id
-Endpunkt aktualisiert werden.
Rufen Sie diesen Endpunkt auf und übergeben Sie Schlüssel/Wert-Paare, die mit den Feldern in den vorhandenen Daten übereinstimmen. Sie müssen auch den Parameter _id
in die Schlüssel/Wert-Paare einschließen. Es gibt KEINE Pflichtfelder und alle Feldtypen werden erzwungen. Die Anfrage schlägt fehl, wenn Felder übergeben werden, die noch nicht im Datensatz vorhanden sind.
Hinweis: Alle Felder, die zum Zeitpunkt einer Aktualisierung nicht vorhanden sind, werden entfernt. Auch wenn sich ein Feld nicht ändert, muss es immer bereitgestellt werden, um seinen Wert beizubehalten.
Die Reaktion ähnelt der beim Hinzufügen einer Zeile, allerdings ist zu beachten, dass sich die Revisionsnummer des Dokuments erhöht hat.
{
"ok" : true ,
"id" : " 22a747412adab2882be7e38a1393f4f2 " ,
"rev" : " 2-6281e0a21ed461659dba6a96d3931ccf "
}
Eine bestimmte Zeile kann mithilfe ihrer eindeutigen ID gelöscht werden, die im Feld _id
jeder Zeile zu finden ist. Dies erfolgt mithilfe des Endpunkts DELETE /row/:id
.
DELETE /row/44d2a49201625252a51d252824932580
Die Reaktion ähnelt der beim Bearbeiten einer Zeile, allerdings ist auch hier zu beachten, dass sich die Revisionsnummer des Dokuments noch einmal erhöht hat.
{
"ok" : true ,
"id" : " 22a747412adab2882be7e38a1393f4f2 " ,
"rev" : " 3-37b4f5c715916bf8f90ed997d57dc437 "
}
Um alle Daten programmgesteuert zu löschen und den Index zu initialisieren
POST /initialize
Einschließen der schema
in die Nutzlast, die die folgende Struktur definiert
{ "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.
Gültige Werte:
name
: beliebige Zeichenfolgetype
: number
, boolean
, string
, arrayofstrings
(z. B. val1,val2,val3
)example
einer Eigenschaft: jeder gültige Wert für diesen type
facet
: true
oder false
Siehe https://github.com/IBM/metrics-collector-client-node#privacy-notice
Bei manuellen Bereitstellungen kann die Bereitstellungsverfolgung durch Entfernen von require("metrics-tracker-client").track();
deaktiviert werden. vom Ende der Hauptserverdatei app.js
Copyright 2018 IBM Cloud Data Services
Lizenziert unter der Apache-Lizenz, Version 2.0 (die „Lizenz“); Sie dürfen diese Datei nur in Übereinstimmung mit der Lizenz verwenden. Eine Kopie der Lizenz erhalten Sie unter
http://www.apache.org/licenses/LICENSE-2.0
Sofern nicht durch geltendes Recht vorgeschrieben oder schriftlich vereinbart, wird die im Rahmen der Lizenz vertriebene Software „WIE BESEHEN“ und OHNE GEWÄHRLEISTUNGEN ODER BEDINGUNGEN JEGLICHER ART, weder ausdrücklich noch stillschweigend, vertrieben. Die spezifische Sprache, die die Berechtigungen und Einschränkungen im Rahmen der Lizenz regelt, finden Sie in der Lizenz.