2

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

在此处输入图像描述

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

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

到目前为止我的想法:

首先,用空格分解文本,然后用冒号分解。因此,第一项将是“搜索字段”,第二个数组将是要查找的值。但是像<=,-和之类的运算符会出现问题*。它们不是固定宽度,所以我不知道我应该为运算符做多少字符“substr”。

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

4

2 回答 2

0

您将不得不使用自动建议来构建类似于高级搜索(也许)的东西来构建用户查询:这样您就可以更好地控制查询结构。
如果您尝试解析徒手查询,您会让自己对查询误解持开放态度:

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

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

于 2012-10-04T10:04:41.073 回答
0

我猜你可以使用一些带有回调的正则表达式。

就像是 :

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

这只是一个示例,您必须完成才能满足您的需求。

祝你好运。

于 2012-10-04T09:54:02.103 回答