我想在我的程序中实现高级搜索功能,但我不想创建这样的界面(这只是示例):
我想要的只是一个文本框,用户可以在其中编写这样的查询(假设它是'联系人'应用程序):
contact_name:john,michael,-michelle age:<=20,=>15 location:usa
到目前为止我的想法:
首先,按空格分解文本,然后按冒号分解。因此,第一个项目将是“搜索字段”,第二个数组将是要查找的值。但问题来自<=
,-
和*
等运营商。它们不是固定的宽度,所以我不知道我应该为操作员做多少字符“substr”。
顺便说一下:如果这个搜索操作有一个像“基于令牌的搜索”之类的通用名称,那么我可以搜索已经完成工作的库。
答案 0 :(得分:0)
答案 1 :(得分:0)
您必须使用自动建议来构建用户查询等高级搜索(可能),这样您就可以更好地控制查询结构了。
如果你试图解析徒手写的查询,你会让自己开放以质疑错误解释:
您认为以下查询有效吗?
contact_name:john,michael,-michelle age:<=20,=>15 location:usa
以及相同无效的以下表示?
contact_name:john, michael,-michelle age:<=20,=>15 location:usa
(几乎可以在任何地方插入任意数量的空格)
尝试搜索“查询构建器”或类似内容,但考虑到实现非常特定于应用程序,我不确定您是否会发现任何有用的内容。