Couchdb 我需要在PockDB和PockDB find中进行不区分大小写的搜索

Couchdb 我需要在PockDB和PockDB find中进行不区分大小写的搜索,couchdb,ionic3,pouchdb,Couchdb,Ionic3,Pouchdb,我的项目是完美的工作,我唯一的问题是,搜索是案件敏感。它可以很好地搜索子字符串,但如果我键入“Test”,它将忽略作为有效结果的“Test” 我使用它使搜索更容易,并且与cloudant搜索和分页的限制/跳过参数更相关 我正在使用,以便用户键入查询的字符串 以下是我的控制器代码摘录: @组件({ 选择器:“页面注释”, templateUrl:'notas.html' }) 出口类别批注{ notas:Array=[]; zone:any=new NgZone({enableLongStackT

我的项目是完美的工作,我唯一的问题是,搜索是案件敏感。它可以很好地搜索子字符串,但如果我键入“Test”,它将忽略作为有效结果的“Test”

我使用它使搜索更容易,并且与cloudant搜索和分页的限制/跳过参数更相关

我正在使用,以便用户键入查询的字符串

以下是我的控制器代码摘录:

@组件({
选择器:“页面注释”,
templateUrl:'notas.html'
})
出口类别批注{
notas:Array=[];
zone:any=new NgZone({enableLongStackTrace:false});
db:any=新的数据库('banco_de__dados.bd');
db_限值=10;
邮袋查询:对象={
选择器:{data_emissao:{$gt:null},
排序:[{'data_emissao':'desc'}],
限额:10,
跳过:0,
};
建造师(
专用扫描仪:条形码扫描仪,
私有toastCtrl:ToastController,
私人googleAnalytics:googleAnalytics,
公共navCtrl:NavController,
公共警报Ctrl:AlertController,
公共modalCtrl:ModalController
) {
this.notas=[];
}
//...
//这里有不相关的代码
//...
onInput($event:any){
this.googleAnalytics.trackEvent('SearchBar','onInput','Event:'+$Event);
//这是查询选项,它正在工作,唯一的问题是它区分大小写
this.pocks\u查询={
选择器:{
数据_emissao:{$gt:null},
descripcao:{$regex:this.search\u query}
},
排序:[{'data_emissao':'desc'}],
限额:10,
跳过:0
};
//这个函数稍微大一点
//但它只是进行搜索并将其列在离子列表中
这个。刷新();
}
}
下面是组件代码摘录


Javascript内置了一个正则表达式函数,因此您只需在下面的正则表达式中添加incensitive选项即可

RegExp(<string>, "i")
您可能希望使用面向“自由文本”匹配的插件,而不是通过PockDB find系统获得的“此字段是否等于此字段”

自由文本搜索索引是用源文本的预处理形式构建的-通常词尾是词干(删除),大小写被忽略,停止词(a和the)被删除。查询更加流畅,“最佳匹配”返回到列表的顶部


PockDB快速搜索与您提到的Cloudant搜索更接近(后者又基于ApacheLucene库)。您可以同时使用这两种查询类型与PockDB:PockDB find进行确定性查询,PockDB quick search进行自由文本匹配。

在internet上比较难以找到的注释-查找和-快速搜索。很高兴读到这一点。谢谢不知道-快速搜索,很高兴我偶然发现了这个答案。
this.pouch_query = {
  selector: { 
    data_emissao: { $gt: null },
    descricao: { $regex: RegExp(this.search_query, "i") }
  },
  sort: [ {'data_emissao' : 'desc'} ],
  limit: 10,
  skip: 0
};