Re: integrated tsearch has different results than tsearch2

Поиск
Список
Период
Сортировка
От Heikki Linnakangas
Тема Re: integrated tsearch has different results than tsearch2
Дата
Msg-id 46DD50FC.5010104@enterprisedb.com
обсуждение исходный текст
Ответ на Re: integrated tsearch has different results than tsearch2  ("Pavel Stehule" <pavel.stehule@gmail.com>)
Ответы Re: integrated tsearch has different results than tsearch2  ("Pavel Stehule" <pavel.stehule@gmail.com>)
Список pgsql-hackers
Pavel Stehule wrote:
> I used dictionaries from fedora core packages
>
> hunspell-cs-20060303-5.fc7.i386.rpm
>
> then I converted it to utf8 with iconv

Ok, thanks.

Apparently it's a bug I introduced when I refactored spell.c to use the
readline function for reading and recoding the input file. I didn't
notice that some calls to STRNCMP used the non-lowercased version of the
input line. Patch attached.

--
  Heikki Linnakangas
  EnterpriseDB   http://www.enterprisedb.com
Index: src/backend/tsearch/spell.c
===================================================================
RCS file: /home/hlinnaka/pgcvsrepository/pgsql/src/backend/tsearch/spell.c,v
retrieving revision 1.2
diff -c -r1.2 spell.c
*** src/backend/tsearch/spell.c    25 Aug 2007 00:03:59 -0000    1.2
--- src/backend/tsearch/spell.c    4 Sep 2007 12:31:55 -0000
***************
*** 733,739 ****
      while ((recoded = t_readline(affix)) != NULL)
      {
          pstr = lowerstr(recoded);
-         pfree(recoded);

          lineno++;

--- 733,738 ----
***************
*** 813,820 ****
              flag = (unsigned char) *s;
              goto nextline;
          }
!         if (STRNCMP(str, "COMPOUNDFLAG") == 0 || STRNCMP(str, "COMPOUNDMIN") == 0 ||
!             STRNCMP(str, "PFX") == 0 || STRNCMP(str, "SFX") == 0)
          {
              if (oldformat)
                  ereport(ERROR,
--- 812,819 ----
              flag = (unsigned char) *s;
              goto nextline;
          }
!         if (STRNCMP(recoded, "COMPOUNDFLAG") == 0 || STRNCMP(recoded, "COMPOUNDMIN") == 0 ||
!             STRNCMP(recoded, "PFX") == 0 || STRNCMP(recoded, "SFX") == 0)
          {
              if (oldformat)
                  ereport(ERROR,
***************
*** 834,839 ****
--- 833,839 ----
          NIAddAffix(Conf, flag, flagflags, mask, find, repl, suffixes ? FF_SUFFIX : FF_PREFIX);

      nextline:
+         pfree(recoded);
          pfree(pstr);
      }
      FreeFile(affix);

В списке pgsql-hackers по дате отправления:

Предыдущее
От: "Pavel Stehule"
Дата:
Сообщение: Re: integrated tsearch has different results than tsearch2
Следующее
От: "Pavel Stehule"
Дата:
Сообщение: Re: integrated tsearch has different results than tsearch2