【问题标题】:Specific search with Cloudant and AngularJS使用 Cloudant 和 AngularJS 进行特定搜索
【发布时间】:2017-07-26 22:42:31
【问题描述】:

我的 Cloudant 上有一个搜索索引,我使用 AngularJS 和 PHP 进行查询。

到目前为止,我还没有得到足够具体的结果。

例如,在使用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:pass.@user.cloudant.com/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)时,我得到了想要的结果。

有什么建议吗?

【问题讨论】:

    标签: php angularjs cloudant


    【解决方案1】:

    尝试在搜索中使用双引号而不是单引号,例如:

    $url = "https://user:pass.@user.cloudant.com/db/_design/fairs/_search/by_fair?q=\"$newsearch\"&include_docs=true";
    

    注意 q 参数的变化:

    q=\"$newsearch\"
    

    【讨论】:

      猜你喜欢
      • 2016-07-18
      • 2013-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-18
      相关资源
      最近更新 更多