0
我有一个搜索引擎用于我的网站。搜索的后端是用Java实现的。我想为我的搜索添加一些高级搜索功能。这些关键字的作用类似于Google或Bing的关键字。例如filetype:pdf
或site:example.com
。当我将查询作为String
获取时,我想分析这些变量,然后运行查询。正则表达式似乎是明显的选择,但我想知道是否有更好/更快的方式。解析键:来自查询的值字符串(如搜索引擎)
我有一个搜索引擎用于我的网站。搜索的后端是用Java实现的。我想为我的搜索添加一些高级搜索功能。这些关键字的作用类似于Google或Bing的关键字。例如filetype:pdf
或site:example.com
。当我将查询作为String
获取时,我想分析这些变量,然后运行查询。正则表达式似乎是明显的选择,但我想知道是否有更好/更快的方式。解析键:来自查询的值字符串(如搜索引擎)
假设你在列表中选择有效的关键词集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
所以你建议我坚持'正则表达式'?这就是我想到的。这是“标准”解决方案吗?我的意思是谷歌使用这个或更复杂的解析器为他们的查询引擎? –