2016-06-14 12 views
1

PouchDB-Quick-Searchプラグインをプロジェクトに統合しました。検索機能はうまく機能しますが、データベース内にあることがわかっている(テスト中の)用語全体を含める場合にのみ見えます。部分的な用語は結果を返さないようで、APIはエラーを投げません。PouchDBクイック検索で部分一致が検索されますか?

searchInputInfo変数は、ユーザーの入力に基づいています。

DTDB.search({ 
     query: searchInputInfo, 
     fields: ['type', 'description', 'notes'], 
     include_docs: true, 
     highlighting: true}) 
.then(function (result) { 
}).catch(function (error){ 
}); 

最後に、 'build'オプションを含めると、検索はまったく機能しません。

ありがとうございました。ドキュメントから

答えて

1

Autosuggestionsとプレフィックス検索

pouchdb-quick-searchプラグインが プレフィックス/自己暗示のサポートを提供していませんが、あなたは自明allDocs()を使用してPouchDB 自身でそれを行うことができます。

pouch.bulkDocs([ 
    {_id: 'marin'}, 
    {_id: 'mario'}, 
    {_id: 'marth'}, 
    {_id: 'mushroom'}, 
    {_id: 'zelda'} 
]).then(function() { 
    return pouch.allDocs({ 
    startkey: 'mar', 
    endkey: 'mar\uffff' 
    }); 
}); 

これは、すべて返されます:

ちょうどあなたが検索する 、を検索してstartkey/endkeyプラス特殊な高Unicode文字\uffffを使用したいものと同じIDを持つドキュメントを作成します'mar'で始まり、この場合は'marin''mario'、および'marth'となるドキュメントです。

どのように動作しますか? PouchDBとCouchDBでは、文書IDはsorted lexiocographicallyなので、\uffffのトリックです。大文字/小文字を処理するための

注意、既に小文字の_id秒で 文書を挿入し、同様 小文字を使用して検索する必要があります。

注:ます。またmap/reduce queriesを使ってこれを実現することができ、かつ 原理は(\uffffトリックを含む)と同じです。ただし、プライマリインデックスではなくセカンダリインデックス を使用しているため、 のパフォーマンスがallDocs()より悪くなる場合があります。

関連する問題