Ich repariere eine Abfrage auf meiner API mit der Nodejs-Bibliothek, aber ich verlor die Facette in der Geschichte.Marklogic (Nodejs API) - Fügen Sie Facette auf XPath Abfrage
Anfangs wurde die Abfrage (mit Facette) mit dem QueryBuilder durchgeführt.
var config = require('./config');
var db marklogic.createDatabaseClient(config.marklogic);
var qb = marklogic.queryBuilder;
var queryElements = [
qb.directory('/product/'),
qb.word('brand', 'myBrand')
/* we add optional conditions here */
];
// facets
var facetQuery = qb.where();
facetQuery.optionsName = 'search_option';
facetQuery.view = 'facets';
facetQuery.search = {
query: qb.and.apply(qb, queryElements)
};
return db.documents.query(facetQuery).result(function(documents) {
console.log(JSON.stringify(documents, null, 4));
});
Diese Abfrage gibt in einigen Fällen falsche Daten zurück, also ändere ich sie mit einer XPath-Abfrage.
var config = require('./config');
var db marklogic.createDatabaseClient(config.marklogic);
var query = 'xdmp:directory("/product")[ attr1 eq "" /* and some optional conditions */]/languages[ code eq "es_ES" and content/category eq "something" /* and some optional conditions */] ! root(.)';
return db.xqueryEval(query, {})
.result(function(results) {
console.log(JSON.stringify(results, null, 2));
});
Die Abfrage funktioniert gut, aber jetzt muss ich Facetten hinzufügen, um die Kompatibilität zu erhalten. Ich habe gesucht, wie Facette auf XPath-Abfrage mit Nodejs-Bibliothek (Dokumentation, Beispiel, Tuto, ...) hinzufügen, aber ich habe nichts gefunden.
Haben Sie eine Idee, wie ich es tun kann?
Thx
Ich denke, Ihre beste Wette ist zu adressieren, warum Ihre erste Frage falsche Daten zurückgab. Solche [Abfragen werden ungefiltert ausgeführt] (http://docs.marklogic.com/guide/performance/unfiltered#chapter), sodass Sie entweder gefilterte oder (besser) Ihre Indizes anders konfigurieren können. Können Sie mehr über die falschen Ergebnisse sagen? –
Ich habe ein Objekt-Array in meinem Dokument und ich muss Dokumente finden, in denen ich mindestens eines der Objekte, deren Match n Bedingungen. Wenn ich queryBuilder verwende, finde ich Dokumente, bei denen Bedingungen irgendwo in allen Objekten übereinstimmen, nicht notwendigerweise im selben Objekt. Derzeit können wir diese Art von Abfrage für JSON-Dokumente in Marklogic mit dem QueryBuilder nicht durchführen. Ich muss XPath-Abfrage verwenden, um Bedingungen auf jedem Objekt anzuwenden –