Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Firebase Firestore中基于正则表达式的文档查询_Firebase_Flutter_Google Cloud Firestore - Fatal编程技术网

Firebase Firestore中基于正则表达式的文档查询

Firebase Firestore中基于正则表达式的文档查询,firebase,flutter,google-cloud-firestore,Firebase,Flutter,Google Cloud Firestore,我想使用正则表达式查询Firestore中的文档。这是因为为了将搜索功能添加到我的Flatter应用程序中,我需要能够基于搜索创建查询。例如,如果用户键入:“alice”-我将有一个类似于(?I)alice的正则表达式,并且我将查询firestore,查找名称字段符合此正则表达式的任何文档,无论是alice、alice Doe还是Doe alice。我正在寻找一个类似以下内容的查询: Firestore.instance.collection('people')) .where('name',m

我想使用正则表达式查询Firestore中的文档。这是因为为了将搜索功能添加到我的Flatter应用程序中,我需要能够基于搜索创建查询。例如,如果用户键入:“alice”-我将有一个类似于
(?I)alice
的正则表达式,并且我将查询firestore,查找名称字段符合此正则表达式的任何文档,无论是alice、alice Doe还是Doe alice。我正在寻找一个类似以下内容的查询:

Firestore.instance.collection('people'))
.where('name',matchesRegex:'(?i)alice')

谢谢你的帮助。我觉得这是一个非常基本的功能,但我在任何地方都找不到。我真的无法得到所有的文档和基于这些文档的搜索,因为集合非常大,我不想阅读那么多文档。

Firestore在查询中不提供任何正则表达式。这些类型的查询无法按Firestore要求的方式进行扩展。它只支持精确的字符串匹配,以及带有字符串前缀的范围查询


如果你需要更灵活的基于文本的查询,考虑将你的数据镜像到一个文本搜索引擎,如Algola,如在

中描述的那样,那么我如何才能完成这个搜索功能?您将需要一个不同的数据库。好的,algola看起来不错,但是Idart没有被列为受支持的语言之一,那么我还可以如何实现它呢?最好的方法就是编写一个使用云函数的云函数。我不明白为什么不支持它,因为它似乎是一个非常普通的特性……还有一个问题,实现这样的索引解决方案有多困难。我对firestore索引的工作原理知之甚少,所以这可能是一个愚蠢的问题。我有一个类似的应用程序。我的方法是——基于name字段,在create触发器上——在doc
searchTerms:{alice:true,doe:true}
中构建这样一个对象,然后在路径上使用反勾号查询
.where('searchTerms.${searchTerm.toLowerCase()},'==',true)
string@danh,这是个好主意,我认为我很有可能实现这一点。@danh将您的评论作为一个问题发布,我会接受。回答和结束这一问题的两位用户几乎都是Firebase的杰出专家,因此如果他们不同意某种方法,我会相信他们的话。我在dup上加了2美分(在我看来,dup回答这个问题做得很差)。