使用 Cloudant 和 AngularJS 进行特定搜索
Specific search with Cloudant and AngularJS
我在 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),我得到了想要的结果.
有什么建议吗?
尝试在搜索中使用双引号而不是单引号,例如:
$url = "https://user:pass.@user.cloudant.com/db/_design/fairs/_search/by_fair?q=\"$newsearch\"&include_docs=true";
注意 q 参数的变化:
q=\"$newsearch\"
我在 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),我得到了想要的结果.
有什么建议吗?
尝试在搜索中使用双引号而不是单引号,例如:
$url = "https://user:pass.@user.cloudant.com/db/_design/fairs/_search/by_fair?q=\"$newsearch\"&include_docs=true";
注意 q 参数的变化:
q=\"$newsearch\"