[Senna-dev 696] Re: ダブルクォートで囲う記法で「データとしてのダブルクォート」を使用するには?

Back to archive index

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




Senna-dev メーリングリストの案内
Back to archive index