Thread

Commits

  1. Fix parsing of complex morphs to tsquery

  1. BUG #16592: websearch_to_tsquery() returns queries that don't result in expected matches

    The Post Office <noreply@postgresql.org> — 2020-08-25T20:07:28Z

    The following bug has been logged on the website:
    
    Bug reference:      16592
    Logged by:          Barry Pederson
    Email address:      bp@barryp.org
    PostgreSQL version: 12.4
    Operating system:   Ubuntu 20.04
    Description:        
    
    In the regression tests src/test/regress/expected/tsearch.out there's an
    example relating to double-quoted searches:
    
    select websearch_to_tsquery('english', '"pg_class pg"');
        websearch_to_tsquery     
    -----------------------------
     ( 'pg' & 'class' ) <-> 'pg'
    (1 row)
    
    However, if you ran a query like that against that exact text 'pg_class pg',
    the result is false when I'd expect it should be true
    
       select to_tsvector('pg_class pg') @@ websearch_to_tsquery('"pg_class
    pg"');
    
    I'd think websearch_to_tsquery('english', '"pg_class pg"') should ideally
    return
      
        'pg' <-> 'class'  <-> 'pg'
    
    which does match the original string, e.g:
    
          select to_tsvector('pg_class pg') @@ to_tsquery('pg <-> class <->
    pg');
    
    does return true
    
    
  2. Re: BUG #16592: websearch_to_tsquery() returns queries that don't result in expected matches

    Alexander Korotkov <aekorotkov@gmail.com> — 2020-08-30T01:44:58Z

    Hi!
    
    On Tue, Aug 25, 2020 at 11:24 PM PG Bug reporting form
    <noreply@postgresql.org> wrote:
    > In the regression tests src/test/regress/expected/tsearch.out there's an
    > example relating to double-quoted searches:
    >
    > select websearch_to_tsquery('english', '"pg_class pg"');
    >     websearch_to_tsquery
    > -----------------------------
    >  ( 'pg' & 'class' ) <-> 'pg'
    > (1 row)
    >
    > However, if you ran a query like that against that exact text 'pg_class pg',
    > the result is false when I'd expect it should be true
    >
    >    select to_tsvector('pg_class pg') @@ websearch_to_tsquery('"pg_class
    > pg"');
    >
    > I'd think websearch_to_tsquery('english', '"pg_class pg"') should ideally
    > return
    >
    >     'pg' <-> 'class'  <-> 'pg'
    >
    > which does match the original string, e.g:
    >
    >       select to_tsvector('pg_class pg') @@ to_tsquery('pg <-> class <->
    > pg');
    >
    > does return true
    
    It really looks at least counterintuitive for me.  I'm going to check this out.
    
    ------
    Regards,
    Alexander Korotkov
    
    
    
    
  3. Re: BUG #16592: websearch_to_tsquery() returns queries that don't result in expected matches

    Alexander Korotkov <aekorotkov@gmail.com> — 2020-08-30T02:11:12Z

    On Sun, Aug 30, 2020 at 4:44 AM Alexander Korotkov <aekorotkov@gmail.com> wrote:
    > On Tue, Aug 25, 2020 at 11:24 PM PG Bug reporting form
    > <noreply@postgresql.org> wrote:
    > > In the regression tests src/test/regress/expected/tsearch.out there's an
    > > example relating to double-quoted searches:
    > >
    > > select websearch_to_tsquery('english', '"pg_class pg"');
    > >     websearch_to_tsquery
    > > -----------------------------
    > >  ( 'pg' & 'class' ) <-> 'pg'
    > > (1 row)
    > >
    > > However, if you ran a query like that against that exact text 'pg_class pg',
    > > the result is false when I'd expect it should be true
    > >
    > >    select to_tsvector('pg_class pg') @@ websearch_to_tsquery('"pg_class
    > > pg"');
    > >
    > > I'd think websearch_to_tsquery('english', '"pg_class pg"') should ideally
    > > return
    > >
    > >     'pg' <-> 'class'  <-> 'pg'
    > >
    > > which does match the original string, e.g:
    > >
    > >       select to_tsvector('pg_class pg') @@ to_tsquery('pg <-> class <->
    > > pg');
    > >
    > > does return true
    >
    > It really looks at least counterintuitive for me.  I'm going to check this out.
    
    I've done a quick investigation.  It seems that this behavior was
    never well-thought out.
    
    I wrote a patch for this issue.  It just replaces OP_AND with
    OP_PHRASE inside quotes.  This patch is not perfect in terms of
    abstractions and needs more work.  But on the user side it probably
    does the right thing.  Could you review its user-level behavior?
    
    ------
    Regards,
    Alexander Korotkov