2013-06-06 29 views
0

我有一个搜索引擎用于我的网站。搜索的后端是用Java实现的。我想为我的搜索添加一些高级搜索功能。这些关键字的作用类似于Google或Bing的关键字。例如filetype:pdfsite:example.com。当我将查询作为String获取时,我想分析这些变量,然后运行查询。正则表达式似乎是明显的选择,但我想知道是否有更好/更快的方式。解析键:来自查询的值字符串(如搜索引擎)

回答

1

假设你在列表中选择有效的关键词集validKeywordLst

你可以使用这个表达式

(?<keyword>\\w+)\\s*:\\s*(?<value>\\S+) 

你的代码将是

Pattern r = Pattern.compile(regex); 
Matcher m = r.matcher(inputSearch); 
if (m.find()) 
{ 
    m.group("keyword");m.group("value"); 
} 

现在你可以检查关键字有效使用validKeywordLst

+0

所以你建议我坚持'正则表达式'?这就是我想到的。这是“标准”解决方案吗?我的意思是谷歌使用这个或更复杂的解析器为他们的查询引擎? –