2017-09-01 3 views
0

Bonjour. J'utilise couchDB pour stocker des données d'une entité qui comprend "firstName", "lastName", "dob" et "idNumber". (Plusieurs autres données dynamiques sont également présentes, mais pas importantes maintenant.)Couchbase Recherche plein texte correspondant à des nombres partiels

J'ai créé un index de recherche de texte intégral pour indexer des types spécifiques de documents et configurer pour rechercher uniquement dans les champs mentionnés ci-dessus. La recherche fonctionne parfaitement pour "firstName" et "lastName" avec des correspondances partielles.

Cependant, pour le numéro d'identification, le nombre exact doit être indiqué. Les recherches partielles sur idNumber ne fonctionnent pas. Par exemple, si '89' correspond à idNumber et que je recherche '760505432', rien n'est renvoyé. Si j'entre le idNumber complètement, il est retourné avec succès. J'ai joué avec les propriétés dans la section FTS, en vain.

Mon champ de date de naissance ne fonctionne pas du tout. Je ne peux pas effectuer de recherche sur ce champ, mais je l'ai parqué jusqu'à ce que l'idNumber fonctionne au moins.

JSON décrivant le filtre comme suit (désolé pour la taille):

{ 
    "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 
    } 
} 

Toute aide sera grandement appréciée, je vous remercie.

Répondre

1

pour la recherche idNumber dans couchbase FTS, c'est peut-être parce que vous essayez une recherche de correspondance exacte? Vous pouvez essayer une recherche de préfixe ...

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

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

+0

Vous êtes sur place. J'ai changé pour une ConjunctionQuery où chaque conjuct est une PrefixQuery avec un terme de recherche tokenized. Maintenant, les recherches telles que "Pet Smi" renvoie "Peter Smith". Fonctionne très bien, merci. –