从一个文本框中进行高级搜索

时间:2012-10-04 09:49:00

标签: php search advanced-search

我想在我的程序中实现高级搜索功能,但我不想创建这样的界面(这只是示例):

enter image description here

我想要的只是一个文本框,用户可以在其中编写这样的查询(假设它是'联系人'应用程序):

contact_name:john,michael,-michelle age:<=20,=>15 location:usa

到目前为止我的想法:

首先,按空格分解文本,然后按冒号分解。因此,第一个项目将是“搜索字段”,第二个数组将是要查找的值。但问题来自<=-*等运营商。它们不是固定的宽度,所以我不知道我应该为操作员做多少字符“substr”。

顺便说一下:如果这个搜索操作有一个像“基于令牌的搜索”之类的通用名称,那么我可以搜索已经完成工作的库。

2 个答案:

答案 0 :(得分:0)

我猜你可以在callbacks使用一些正则表达式。

类似的东西:

"`[a-z]+:([*<=>])([a-z],)+ `U"

这只是一个例子,你必须完成是否符合你的需要。

祝你好运。

答案 1 :(得分:0)

您必须使用自动建议来构建用户查询等高级搜索(可能),这样您就可以更好地控制查询结构了。
如果你试图解析徒手写的查询,你会让自己开放以质疑错误解释:

您认为以下查询有效吗? contact_name:john,michael,-michelle age:<=20,=>15 location:usa
以及相同无效的以下表示? contact_name:john, michael,-michelle age:<=20,=>15 location:usa
(几乎可以在任何地方插入任意数量的空格)

尝试搜索“查询构建器”或类似内容,但考虑到实现非常特定于应用程序,我不确定您是否会发现任何有用的内容。