【问题标题】:Parsing key:value strings from query (like search engines)从查询中解析键:值字符串(如搜索引擎)
【发布时间】:2013-06-06 13:58:06
【问题描述】:

我的网站有一个搜索引擎。搜索的后端是用 Java 实现的。我想在我的搜索中添加一些高级搜索功能。这些关键字的作用类似于 Google 或 Bing 的关键字。例如filetype:pdfsite:example.com。当我得到String 的查询时,我想解析这些变量然后运行查询。正则表达式似乎是显而易见的选择,但我想知道是否有更好/更快的方法。

【问题讨论】:

    标签: java regex search-engine


    【解决方案1】:

    假设您在 List 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检查关键字是否有效

    【讨论】:

    • 所以你建议我坚持Regex?这就是我想到的。它是“标准”解决方案吗?我的意思是 Google 是在为他们的查询引擎使用这个或更复杂的解析器吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-30
    • 1970-01-01
    • 2013-07-27
    相关资源
    最近更新 更多