2011年2月22日

[pgsql-jp: 40698] Re:postgres8.4+senna1.5の検索について

2011/2/22 Masahiro Kato <kato@xxxxx>:
> postgres8.4+senna1.5の検索についてお尋ねします
>
> select count (*) from item
> where (title %% '夏' ) and (title %% '目');
>
> で'夏目'のデータを検索できないのですが
> どうすれば検索できるのでしょうか?


textsearch_senna のバグでした。
Senna クエリで "夏+目" と "夏 +目" で結果が違うのを見逃していました。
( + の前にスペースの有無)

以下の修正をしてください。HEAD のほうには反映しておきます。

Index: textsearch_senna.c
===================================================================
RCS file: /cvsroot/textsearch-ja/textsearch_senna/textsearch_senna.c,v
retrieving revision 1.16
diff -u -r1.16 textsearch_senna.c
--- textsearch_senna.c 2 Feb 2011 06:11:04 -0000 1.16
+++ textsearch_senna.c 22 Feb 2011 11:59:00 -0000
@@ -1451,7 +1451,7 @@
{
/* %foo% is converted to "foo" */
if (buf.len > 0)
- appendStringInfoChar(&buf, '+');
+ appendStringInfoString(&buf, " +");
appendStringInfoChar(&buf, '"');
appendBinaryStringInfo(&buf, str + 1, len - 2);
appendStringInfoChar(&buf, '"');
@@ -1498,7 +1498,7 @@
if (!quoted)
{
if (buf.len > 0)
- appendStringInfoChar(&buf, '+');
+ appendStringInfoString(&buf, " +");
appendStringInfoChar(&buf, '"');
quoted = true;
}
@@ -1517,7 +1517,7 @@
else
{
if (buf.len > 0)
- appendStringInfoChar(&buf, '+');
+ appendStringInfoString(&buf, " +");
/* just copy for senna query */
appendBinaryStringInfo(&buf, str, len);
}

--
Itagaki Takahiro

投稿者 xml-rpc : 2011年2月22日 21:02
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/102226
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。