【问题标题】:Couchbase Full text search matching partial numbersCouchbase 全文搜索匹配部分数字
【发布时间】:2023-04-03 18:37:01
【问题描述】:

美好的一天。

我正在使用 couchDB 存储某些实体的数据,其中包括“firstName”、“lastName”、“dob”和“idNumber”。 (其他各种动态数据也有,但现在不重要了。)

我创建了一个全文搜索索引来索引特定类型的文档,并设置为仅搜索上述字段。搜索对于部分匹配的“firstName”和“lastName”也很有效。

但是,对于 idNumber,必须给出确切的数字。对 idNumber 的部分搜索不起作用。例如,如果 '7605054321089' 是 idNumber 并且我搜索 '760505432',则不会返回任何内容。如果我完全输入 idNumber,它会成功返回。我在 FTS 部分下的属性摆弄过,无济于事。

我的出生日期字段根本不起作用。我无法在该字段上进行搜索,但我已将其停放,直到我至少获得 idNumber 才能工作。

描述过滤器的JSon如下(对不起大小):

{
  "type": "fulltext-index",
  "name": "entities_fts",
  "uuid": "5c5dc5e32083535f",
  "sourceType": "couchbase",
  "sourceName": "entities",
  "sourceUUID": "04bb2840ed12d26003797737e5a19908",
  "planParams": {
    "maxPartitionsPerPIndex": 32,
    "numReplicas": 0,
    "hierarchyRules": null,
    "nodePlanParams": null,
    "pindexWeights": null,
    "planFrozen": false
  },
  "params": {
    "mapping": {
      "byte_array_converter": "json",
      "default_analyzer": "standard",
      "default_datetime_parser": "dateTimeOptional",
      "default_field": "_all",
      "default_mapping": {
        "display_order": "1",
        "dynamic": true,
        "enabled": false
      },
      "default_type": "_default",
      "index_dynamic": true,
      "store_dynamic": false,
      "type_field": "header.type",
      "types": {
        "person": {
          "display_order": "0",
          "dynamic": false,
          "enabled": true,
          "properties": {
            "basic": {
              "display_order": "1",
              "dynamic": false,
              "enabled": true,
              "properties": {
                "dob": {
                  "dynamic": false,
                  "enabled": true,
                  "fields": [
                    {
                      "analyzer": "",
                      "display_order": "0",
                      "include_in_all": true,
                      "include_term_vectors": true,
                      "index": true,
                      "name": "",
                      "store": false,
                      "type": "datetime"
                    }
                  ]
                },
                "firstNames": {
                  "dynamic": false,
                  "enabled": true,
                  "fields": [
                    {
                      "analyzer": "",
                      "display_order": "2",
                      "include_in_all": true,
                      "include_term_vectors": true,
                      "index": true,
                      "name": "",
                      "store": false,
                      "type": "text"
                    }
                  ]
                },
                "lastNames": {
                  "dynamic": false,
                  "enabled": true,
                  "fields": [
                    {
                      "analyzer": "",
                      "display_order": "1",
                      "include_in_all": true,
                      "include_term_vectors": false,
                      "index": true,
                      "name": "",
                      "store": false,
                      "type": "text"
                    }
                  ]
                }
              }
            },
            "extended": {
              "display_order": "0",
              "dynamic": false,
              "enabled": true,
              "properties": {
                "idNumber": {
                  "dynamic": false,
                  "enabled": true,
                  "fields": [
                    {
                      "analyzer": "keyword",
                      "display_order": "0",
                      "include_in_all": true,
                      "include_term_vectors": false,
                      "index": true,
                      "name": "",
                      "store": false,
                      "type": "text"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "store": {
      "kvStoreName": "forestdb"
    }
  },
  "sourceParams": {
    "clusterManagerBackoffFactor": 0,
    "clusterManagerSleepInitMS": 0,
    "clusterManagerSleepMaxMS": 2000,
    "dataManagerBackoffFactor": 0,
    "dataManagerSleepInitMS": 0,
    "dataManagerSleepMaxMS": 2000,
    "feedBufferAckThreshold": 0,
    "feedBufferSizeBytes": 0
  }
}

任何帮助将不胜感激,谢谢。

【问题讨论】:

    标签: full-text-search couchbase n1ql


    【解决方案1】:

    对于 couchbase FTS 中的 idNumber 搜索,可能是因为您正在尝试完全匹配搜索?您可能想尝试前缀搜索...

        {
            "from": 0,
            "size": 10,
            "query": {
                "field": "name",
                "prefix": "bobble"
            }
        }
    

    https://github.com/blevesearch/bleve/blob/master/test/tests/basic/searches.json#L91

    【讨论】:

    • 你很准。我更改为 ConjunctionQuery,其中每个 conjuct 都是带有标记化搜索词的 PrefixQuery。现在搜索“Pet Smi”会返回“Peter Smith”。效果很好,谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-12
    • 2011-03-04
    • 2023-01-02
    • 2019-09-22
    • 2011-10-22
    • 1970-01-01
    • 2012-04-01
    相关资源
    最近更新 更多