2017-07-26 1 views
0

Ich habe einen Suchindex auf meinem Cloudant, den ich mit AngularJS und PHP abfrage.Spezifische Suche mit Cloudant und AngularJS

Bis jetzt bekomme ich nicht spezifisch genug Ergebnisse.

Zum Beispiel, bei einer Suche mit fair:'Fair 2017', bekomme ich alle Ergebnisse, einschließlich Fair, einschließlich Fair 2016 und so weiter.

Ich habe verschiedene Sucharten (einfach, Standard, klassisch) ausprobiert, und es passiert mit allen von ihnen.

Ein typisches Objekt:

doc:Object 
    exhibitortype:"Project Space" 
    fair:"Fair 2017" 
    ... 

Hier ist mein AngularJS Code:

$scope.loadexhibitors = function(fair){ 
    $scope.searchindex = fair.doc.fairname; 

    var $promisefairexh=$http({ 
    url: 'databaseconnect/getexhibitors.php', 
    method: "GET", 
    params: {search: $scope.searchindex} 
    }); 
... 

Die PHP-Bit wie folgt aussieht:

<?php 

    $search = $_GET["search"]; 
    $newsearch = str_replace(' ', '+', $search); 

    $url = "https://user:[email protected]/db/_design/fairs/_search/by_fair?q='$newsearch'&include_docs=true"; 
    $ch = curl_init(); // initialize curl handle 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); 
    $output = curl_exec($ch); 

    $info = curl_getinfo($ch); 
    curl_close($ch); 
?> 

Und meine Cloudant Suchfunktion:

function (doc) { 
    index("default", doc.fair); 
} 

Auf der Cloudant Benutzeroberfläche, wenn ich den Suchindex und doppelte Anführungszeichen auf die Sucheingabe (zum Beispiel: "Fair 2016" statt Fair 2016) testen, bekomme ich die gewünschten Ergebnisse.

Irgendwelche Tipps?

Antwort

1

statt einfache Anführungszeichen verwenden doppelte Anführungszeichen in Ihrer Suche Versuchen Sie, zum Beispiel:

$url = "https://user:[email protected]/db/_design/fairs/_search/by_fair?q=\"$newsearch\"&include_docs=true"; 

Beachten Sie die Änderung des q param:

q=\"$newsearch\" 
Verwandte Themen