[pgsql-jp: 40698] Re: postgres8.4+senna1.5の検索について
Itagaki Takahiro
itagaki.takahiro @ gmail.com
2011年 2月 22日 (火) 21:02:10 JST
2011/2/22 Masahiro Kato <kato @ ndkcom.co.jp>:
> 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
pgsql-jp メーリングリストの案内