2011-03-03 56 views
2

我想打开样式的查询字符串:CPAN模块解析谷歌样式的搜索查询条款?

my $query = q{recipe "with sauce" +eggs -pastrami}; 

进入一个纲领性的,SQL::Abstract查询,在DBIx::Class使用。

$where = { -and=>[ 
    'ingredients' =>[ { -like=>'%recipe%' }, { -like=>'%with sauce%' } ], 
    'ingredients' =>{ -like=>'%eggs%' }, 
    -not => { 'ingredients => { -like => '%pastrami%' } } 
]}; 

上述表示法仅为近似值。它是用耳朵写的,没有经过测试,绝不是在语法和概念上都是正确的。

我在找的是一些关于这个主题的基础知识。一个CPAN模块,或者一个可以变成CPAN模块的C库。有这样的标准吗?

回答

5

KinoSearch中的基本查询语法分析器确实如此(虽然默认的查询布尔值加入部分是OR,但它可以设置为AND)。你有几种方法来处理词干,标记类型和通配符是可能的,但不是内置的。它有一个学习曲线,文档有点薄,但我强烈推荐这个软件包。除了做得好和速度极快外,作者对反馈,问题和错误报告的反应非常敏感。

+1

+1感谢您对KinoSearch的建议。 – bvr 2011-03-03 05:40:52

+1

这很好,谢谢。 KinoSearch非常强大。我发现了一个很好的用法[在其中一个测试中](http://cpansearch.perl.org/src/CREAMYG/KinoSearch1-1.01/t/601-queryparser.t)。现在我只需要弄清楚如何将它变成一个SQL :: Abstract查询。 – ojosilva 2011-03-03 16:58:21