2011-03-03 5 views
2

私はスタイルのクエリ文字列を有効にする:google形式の検索クエリ用語を解析するCPANモジュールですか?

のプログラム、 SQL::Abstract問合せに
my $query = q{recipe "with sauce" +eggs -pastrami}; 

は、DBIx::Classで使用されます。

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

上記の表記は凡例です。それは耳で書かれていて、テストされておらず、構文的にも概念的にも正しいわけではありません。

私が探しているのは、そのテーマに関するいくつかの先行技術、基本的なものです。おそらくCPANモジュール、またはCPANモジュールに変換できるCライブラリ。そんなことの基準はありますか? (部品を結合するデフォルトのクエリboolean型は、それがANDに設定することができ、あるORが)

答えて

5

KinoSearchにおける基本的なクエリパーサーは、まさにその作業を行います。ステミング、トークンタイプ、およびワイルドカードへのアプローチにはいくつかの方法がありますが、組み込みはできません。それは学習曲線があり、ドキュメントは少し薄いですが、私はパッケージを強く推奨します。著者がフィードバック、質問、バグレポートに非常に敏感です。

+1

+1 KinoSearchのヒントをありがとう。 – bvr

+1

これは素晴らしいです、ありがとう。 KinoSearchは本当に強力です。私は素晴らしい使用法の概要を見つけました。[http://cpansearch.perl.org/src/CREAMYG/KinoSearch1-1.01/t/601-queryparser.t]。今私はそれをSQL :: Abstractクエリに変換する方法を理解する必要があります。 – ojosilva