2017-07-26 61 views
0

我在我的Cloudant上有一個搜索索引,我使用AngularJS和PHP進行查詢。Cloudant和AngularJS的具體搜索

到目前爲止我沒有得到足夠詳細的結果。

例如,在使用fair:'Fair 2017'進行搜索時,我得到的所有結果包括Fair,包括Fair 2016等等。

我嘗試過不同的搜索類型(簡單,標準,經典),它發生在所有這些類型中。

一個典型的對象:

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

這裏是我的AngularJS代碼:

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

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

的PHP位看起來是這樣的:

<?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); 
?> 

而且我Cloudant搜索功能:

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

另一方面,在Cloudant用戶界面上,當我測試搜索索引並在搜索輸入中包含雙引號(例如:「Fair 2016」而不是Fair 2016)時,我會得到期望的結果。

任何提示?

回答

1

嘗試使用雙引號搜索,而不是單引號,例如:

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

注意變化到Q PARAM:

q=\"$newsearch\"