首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cloudant / Bluemix地质搜索

Cloudant / Bluemix地质搜索
EN

Stack Overflow用户
提问于 2015-02-24 14:57:06
回答 1查看 382关注 0票数 2

我试图使用Bluemix运行时的nano库查询cloudant数据库。目标是将最近的200个地质点带回到一个给定的位置。我有一个用虚拟数据建立的cloudant数据库和一个具有相关字段的搜索索引函数:

代码语言:javascript
复制
function(doc){
    index("status", doc.status, {"store":true, index:true});
    index("lat",doc.latitude,{"store": true, index:true});
    index("lon",doc.longitude,{"store": true, index:true});
}

我可以直接查询cloudant数据库。location?q=status:1&limit=200&sort=%22%3Cdistance,lon,lat,5.0,50.0,km%3E%22,它带回了按中心附近订购的200个位置的列表(5.0,50.0)。分贝填充了一组20000个虚拟点,上面的搜索把距离中心3到60公里之间的地方带回了,所以看起来都很好。

现在,我需要在node.js bluemix运行时中执行此操作。调用下面的函数对数据库进行搜索.

代码语言:javascript
复制
app.get('/search', function(request, response) {

    var latitude = request.query.latitude;
    var longitude = request.query.longitude;
    var qString = 'status:[1 TO 1]&limit=180&sort="<distance,lon,lat,' + longitude + ',' + latitude + ',km>"';

    database.search('mainDesignDoc', 'search_location', {q:qString}, function(err, body) {
        if (!err) {
            var dbdata = [];
            body.rows.forEach(function(doc) {
                dbdata.push(doc.fields);
            });
            response.send(dbdata);
        } else {
            response.send("error: " + err);
        }
    });
});

这将返回25个结果,其中的点没有排序,也不是离中心最近的25分。我为qString尝试过不同的语法,试图让它正常工作,但没有找到任何可行的方法。

​任何帮助得到这项工作将不胜感激!

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-26 07:36:01

代码似乎错误地将限制和排序参数指定为搜索查询(q)的一部分。以下应该生成正确的URL,我认为:

代码语言:javascript
复制
app.get('/search', function(request, response) {

    var latitude = request.query.latitude;
    var longitude = request.query.longitude;
    var qString = 'status:[1 TO 1]';
    var sortString = '"<distance,lon,lat,' + longitude + ',' + latitude + ',km>"';
    database.search('mainDesignDoc', 'search_location', {q:qString, limit:180, sort:sortString}, function(err, body) {

        if (!err) {
            var dbdata = [];
            body.rows.forEach(function(doc) {
                dbdata.push(doc.fields);
            });
            response.send(dbdata);
        } else {
            response.send("error: " + err);
        }
    });
});
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28699027

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档