使用Elastic Search和Firebase搜索嵌套对象

时间:2015-01-19 20:18:40

标签: javascript angularjs elasticsearch firebase

按照Firebase.com的Flashlight GitHub示例,我按照指示在Heroku上部署工作 - 但我的数据结构方式,我认为可能有更好的方法吗?

我的数据结构如下:

(root)pages
-->Firebase Unique ID
---->chat
---->content
------>Firebase Unique ID
-------->title
-------->description
-------->filter = article
---------->tags
------------tag 1
------------tag 2

我只希望弹性搜索根据匹配标签或过滤器=文章返回结果,但我从页面中得到所有内容(所有聊天,所有内容,无论是否与结果匹配,而不是来自其他页面的内容)等等......)

手电筒代码的config.js中的路径只是:

exports.paths = [
   {
      path:  "pages",
      index: "firebase",
      type:  "pages"
   },
   {
      path:  "event_entry",
      index: "firebase",
      type:  "events"
   }
];

我在开发方面还处于早期阶段,我可以改变数据的结构;我想过:

(root) content
-->Firebase Unique ID
---->title
---->description
---->filter = article

然后只需将Firebase唯一ID存储在某个页面对象中?

正如现在所说,我正在解析结果,以便检查标签并仅显示实际标记了我搜索的内容,这只是......丑陋......

function showResults(snap) {
  if( snap.val() === null ) { return; } // wait until we get data
  var dat = snap.val();
  var out = '';
  $.each(dat["hits"]["0"]["_source"]["content"], function(i, v) {
    for(var k in v.tags)
    {
      if(v['tags'][k]['text'] == $scope.search)
      {
        out += v.title + ": " + i + "<br>";
        console.log(i);
      }
    }
  });
  $("#results").text(out);
}

0 个答案:

没有答案