Yamada Takuji
yamad****@media*****
2007年 9月 25日 (火) 16:22:22 JST
山田です。 ぜひエスケープする方法を実装して頂けますと嬉しいです。 #SQL標準でシングルクォートをエスケープする時のように、 ダブルクォートを二重化するとエスケープされる、 みたいなのがいいのでは・・と思ったりします。 Tasuku SUENAGA wrote: > 現在はダブルクオート自体を検索する方法がありません。 > エスケープの文法を考えないといけないですね… > > Yamada Takuji さんは書きました: > >>はじめまして、山田と申します。 >> >>sennaで、複数の単語と半角スペースから成る「センテンスとしてのデータ」を検索したいと考えています。 >>例えば、 >> >>this is a music >>is this a music ? >>a music is this >> >>という3つのデータがあった場合、「this is a music」だけを検索したいとします。 >>その場合、センテンスの前後にダブルクォートを付けて、 >> >>select * from table where keyword @@ '"this is a music"'; >> >>というクエリーを実行すれば、このセンテンスに完全に一致するデータだけが検索できます。 >>ここで疑問なのですが、もし検索したいデータにダブルクォートが付いていて、 >> >>this is a "music" >> >>というデータを検索したい場合、どうすれば良いでしょうか? >>単純に下記のようなクエリーを書いた場合、 >> >>select * from table where keyword @@ '"this is a "music""'; >> >>このクエリーをsennaは、「this is a 」と「music""」のOR条件としてパースしてしまうと思います。 >>(データとしての"を、sennaの記法としての"と見なしてしまう) >> >>sennaのソースコードを確認したところ、センテンスの前後をダブルクォートで囲う記法での >>字句のパースは、senna-1.0.8/lib/query.c のget_phrase()関数で行われているようなのですが、 >>ここでは特に「データとしてのダブルクォート」は想定されていないように見えます。 >> >>ダブルクォートで囲う記法で「データとしてのダブルクォート」を含むセンテンスを >>検索するには、どういうクエリーの書き方をすれば良いのでしょうか? > > > --- > Tasuku SUENAGA <a****@razil*****> > > _______________________________________________ > Senna-dev mailing list > Senna****@lists***** > http://lists.sourceforge.jp/mailman/listinfo/senna-dev