【问题标题】:firebase flashlight partial match for only one fieldfirebase 手电筒部分匹配仅一个字段
【发布时间】:2016-10-19 14:05:26
【问题描述】:

对于我的应用程序,我使用手电筒搜索引擎,在我的弹性表中,我存储了一个包含两个字段 id: { name: "", uid: "" } 的数据。当我想检索某个值时,我只想在名称字段中进行部分匹配,如果匹配有效,则检索所有两个字段。 在我的请求数据中,我通常存储这个结构

search : {
  request: {
    -54shdjwirjghcb7364gf92jcns20ahd: {
        index: "firebase",
        type: "event",
        from: 0,
        size: 50,
        query: "*fra*"
    }
  }
}

结果是肯定的,但在这种情况下,手电筒会搜索所有字段中的部分匹配项,因为如果我使用部分 uid 或部分名称进行匹配,结果总是肯定的(如果字符串对应)。

如何只对一个字段进行部分匹配?

我的服务器端搜索队列是这样的

_process: function (snap) {
        var dat = snap.val();
        var key = snap.key;

        if (this._assertValidSearch(key, dat)) {
            // Perform (a very simple) ElasticSearch query
            this.esc.search({
                index: dat.index,
                type: dat.type,
                from : dat.query.from,
                size : dat.query.size,
                q: dat.query
            }, function (error, response) {
                if (error) {
                    this._reply(key, { error: error, total: 0 });
                } else {
                    this._reply(key, response);
                }
            }.bind(this));
        }
    },

提前致谢

【问题讨论】:

    标签: elasticsearch firebase elasticjs


    【解决方案1】:

    尝试使用"name:*fra*" 作为查询。查询属性作为 q 参数传递给 elasticsearch。

    在这里查看:https://www.elastic.co/guide/en/elasticsearch/reference/5.0/search-search.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-13
      • 2020-01-12
      • 1970-01-01
      • 1970-01-01
      • 2021-08-28
      • 1970-01-01
      相关资源
      最近更新 更多