2017-07-26 4 views
0

AngularJSとPHPを使用してクエリしたCloudantに検索インデックスがあります。CloudantとAngularJSによる具体的な検索

これまでのところ、十分な結果が得られていません。

例えば、fair:'Fair 2017'の検索では、Fair 2016などを含むFairを含むすべての結果が得られます。

私はさまざまな検索タイプ(シンプル、スタンダード、クラシック)を試しましたが、すべての検索タイプで発生しました。

典型的なオブジェクト:

$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検索機能:

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

ここに私のAngularJSコードです

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

一方、Cloudant User Interfaceでは、検索インデックスをテストし、検索入力に二重引用符を含めると(たとえば、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\" 
関連する問題