Couchbase 全文搜索匹配部分数字
Couchbase Full text search matching partial numbers
美好的一天。
我正在使用 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
}
}
非常感谢任何帮助,谢谢。
对于 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
美好的一天。
我正在使用 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
}
}
非常感谢任何帮助,谢谢。
对于 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