如何使用文本搜索查询 firebase 数据库
How can I query firebase database with text search
在我制作的 android 应用程序中,我实现了一个搜索栏,因此用户可以输入一些内容,希望在数据库中找到它。我已经设置好了,这样结果就会出现,但前提是它拼写得完美而完整。我想这样做,以便它可以在用户输入时显示结果,即使它拼写错误并且只是相似。我已经阅读了 firebase 库可能的内置查询选项,但它们似乎不支持我正在寻找的内容。有什么方法可以相对简单地将其添加到我的项目中吗?我知道预测文本搜索不是简单地创建的,但是有一些我可以导入的库吗?
您可以使用
搜索字符串
databaseReference.orderByChild('_searchLastName')
.startAt(queryText)
.endAt(queryText+"\uf8ff")
.addValueEventListener ...
根据 Martin 的回答,如果你想显示即使他们有一点偏差我会做的是过滤。
databaseReference.orderByChild('_searchLastName')
.startAt(queryText)
.limitToFirst(10) //return 10 results
...
我假设您可以转换为字符串列表,这将为您提供从您的查询开始的所有结果以及接下来的 9 个结果,这比您想要的要多。
从这里开始,您想根据 contains 或 startsWith
进行过滤
public List<String> filter(List<String> listToFilter, String query){
List<String> results = new ArrayList();
for( String string : listToFilter){
if(string.startsWith(query){//or contains
results.add(string);
}
}
return results
}
在我制作的 android 应用程序中,我实现了一个搜索栏,因此用户可以输入一些内容,希望在数据库中找到它。我已经设置好了,这样结果就会出现,但前提是它拼写得完美而完整。我想这样做,以便它可以在用户输入时显示结果,即使它拼写错误并且只是相似。我已经阅读了 firebase 库可能的内置查询选项,但它们似乎不支持我正在寻找的内容。有什么方法可以相对简单地将其添加到我的项目中吗?我知道预测文本搜索不是简单地创建的,但是有一些我可以导入的库吗?
您可以使用
搜索字符串databaseReference.orderByChild('_searchLastName')
.startAt(queryText)
.endAt(queryText+"\uf8ff")
.addValueEventListener ...
根据 Martin 的回答,如果你想显示即使他们有一点偏差我会做的是过滤。
databaseReference.orderByChild('_searchLastName')
.startAt(queryText)
.limitToFirst(10) //return 10 results
...
我假设您可以转换为字符串列表,这将为您提供从您的查询开始的所有结果以及接下来的 9 个结果,这比您想要的要多。
从这里开始,您想根据 contains 或 startsWith
进行过滤public List<String> filter(List<String> listToFilter, String query){
List<String> results = new ArrayList();
for( String string : listToFilter){
if(string.startsWith(query){//or contains
results.add(string);
}
}
return results
}