2017-09-01 3 views
0

おはよう。Couchbase部分一致に一致する全文検索

"firstName"、 "lastName"、 "dob"、 "idNumber"を含むいくつかのエンティティのデータを格納するのにcouchDBを使用しています。

特定の種類のドキュメントのインデックスを作成するためのフルテキスト検索インデックスを作成し、上記のフィールドのみを検索するように設定しました。検索は「firstName」と「lastName」の部分一致でも完全に機能します。

ただし、idNumberの場合、正確な数値を指定する必要があります。 idNumberの部分検索は機能しません。たとえば、 '89'が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 
    } 
} 

すべてのヘルプは非常にあなたに感謝し、理解されるであろう。

答えて

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

+0

...プレフィックス検索をしようとする場合があります。私はConjunctionQueryに変更しました。ここで、各結合子はトークン化された検索語を持つPrefixQueryです。 「Pet Smi」などの検索で「Peter Smith」が返されます。素晴らしい作品です、ありがとうございました。 –

関連する問題