2017-09-12 7 views
0

私のプロジェクトは完璧に機能していますが、唯一の問題は検索で大文字小文字を区別することです。部分文字列をうまく検索できますが、"Test"と入力すると、"test"が有効な結果として無視されます。pouchdbとpouchdb-findで大文字と小文字を区別しない検索を行う必要があります

私はpouchdb-findを使用して検索をより簡単にし、雲の検索にもっと関連させます。limit/skipページめくりのパラメータ。

私はion-searchbarを使用して、照会された文字列を入力します。ここで

は私のコントローラーのコードの抜粋です:

@Component({ 
    selector: 'page-notas', 
    templateUrl: 'notas.html' 
}) 
export class NotasPage { 
    notas: Array<Object> = []; 
    zone: any = new NgZone({ enableLongStackTrace: false }); 
    db: any = new PouchDB('banco_de_dados.bd'); 
    db_limit = 10; 

    pouch_query: object = { 
     selector: { data_emissao: { $gt: null } }, 
     sort: [ {'data_emissao' : 'desc'} ], 
     limit: 10, 
     skip: 0, 
    }; 

    constructor(
     private scanner: BarcodeScanner, 
     private toastCtrl: ToastController, 
     private googleAnalytics: GoogleAnalytics, 
     public navCtrl: NavController, 
     public alertCtrl: AlertController, 
     public modalCtrl: ModalController 
    ) { 
     this.notas = []; 
    } 
    //... 
    // unrelated code in here 
    //... 
    onInput($event:any) { 
     this.googleAnalytics.trackEvent('SearchBar', 'onInput', 'Event: ' + $event); 
     //Here is the query options, it's working, the only problem is that it's case sensitive 
     this.pouch_query = { 
      selector: { 
      data_emissao: { $gt: null }, 
      descricao: { $regex: this.search_query } 
      }, 
      sort: [ {'data_emissao' : 'desc'} ], 
      limit: 10, 
      skip: 0 
     }; 
     // this function is a little bigger 
     // butit just makes the search and list it in a ion-list 
     this.refresh(); 
    } 
} 

そしてここでは、コンポーネントのコードの抜粋です。

<!-- MORE UNRELATED CODE --> 
<ion-searchbar 
    [(ngModel)]="search_query" 
    [showCancelButton]="shoulShowCancelButton" 
    (ionInput)="onInput($event)" 
    (ionCancel)="onCancel($event)"> 
</ion-searchbar> 
<!-- MORE UNRELATED CODE --> 

答えて

0

Javascriptがあなただけのregexasにincensitiveオプションを追加する必要がありますので、内蔵されて正規表現の機能を持っている

RegExp(<string>, "i") 

あなたはw3schoolsに正規表現オプションのリストを見つけることができますが、次の。ここでは完全なコードです:あなたは「フリーテキスト」を目指しているpouchdb-quick-searchプラグインを使用したいと思うかもしれ

this.pouch_query = { 
    selector: { 
    data_emissao: { $gt: null }, 
    descricao: { $regex: RegExp(this.search_query, "i") } 
    }, 
    sort: [ {'data_emissao' : 'desc'} ], 
    limit: 10, 
    skip: 0 
}; 
2

ではなく、一致「このフィールド等しいこのフィールドない」あなたはpouchdb-見つけるシステムを取得します。

フリーテキスト検索索引は、ソーステキストの事前処理された形式で作成されます。通常、単語の末尾は省略(削除)され、大文字小文字は無視され、停止語(a、および、)は削除されます。クエリーははるかに流動的で、リストの先頭に「ベストマッチ」が返されます

pouchdb-quick-searchは、あなたが言及したCloudant Search(Apache Luceneライブラリをベースにしています) 。 PouchDBでは、決定的なクエリの場合はpouchdb-find、フリーテキストマッチングの場合はpouchdb-quick-searchの両方のタイプのクエリを同時に使用できます。

+0

インターネットでの-findと-quick-searchを比較するのは難しいです。本当にそれを読むことをうれしく思います。ありがとう! – Cedric

関連する問題