PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 20/06/2013 10:31:46

pitpoule
Membre

[NEWBIE] Recherche plein texte qui ne retourne pas ce que j'attends...

bonjour à tous,

Ma question doit être surement bête mais je n'arrive pas à comprendre... j'ai installé pour faire joujou une des bases "sample" de pgfoundry, la base "dell store"
Dans cette base existe une fonction qui fait de la recherche plein texte (si j'ai bien compris la fonction !)

CREATE OR REPLACE FUNCTION browse_by_actor(batch_size_in integer, actor_in text)
RETURNS SETOF products AS
$BODY$
DECLARE
  vector_in TEXT;
BEGIN
    vector_in := replace(trim(both from actor_in), ' ','&');
   RETURN QUERY SELECT * FROM PRODUCTS WHERE to_tsvector('simple',ACTOR) @@ to_tsquery(vector_in) LIMIT batch_size_in;
RETURN;
END;
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100
  ROWS 1000;
ALTER FUNCTION browse_by_actor(integer, text)
  OWNER TO ds2;

Lorsque je fais cette recherche, j'ai un résultat

ds2=# select browse_by_actor(10,'TOM');


                    browse_by_actor
--------------------------------------------------------
 (396,1,"ACADEMY HANGING","TOM BRANDO",11.99,0,175497)
 (456,3,"ACADEMY INCH","TOM PACINO",16.99,0,281711)
 (533,5,"ACADEMY LOST","TOM OLIVIER",12.99,0,890719)
 (715,1,"ACADEMY RANGE","TOM BOGART",16.99,0,595664)
 (1182,6,"ACE CONTROL","TOM RYAN",25.99,0,384257)
 (1617,13,"ACE NATURAL","TOM DAY-LEWIS",10.99,0,313129)
 (1653,15,"ACE PANIC","TOM MCKELLEN",19.99,0,70037)
 (1725,4,"ACE REQUIEM","TOM LANCASTER",17.99,0,502027)
 (1826,11,"ACE SPEED","TOM MATTHAU",19.99,0,351249)
 (1849,13,"ACE STORM","TOM MIRANDA",11.99,0,932078)
(10 rows)

Tandis que si je fais

ds2=# select browse_by_actor(10,'LISA');
 browse_by_actor
-----------------
(0 rows)

Alors qu'il existe bien des "LISA" dans la colonne actor

ds2=# SELECT * FROM PRODUCTS WHERE ACTOR like '%LISA%' limit 10;
 prod_id | category |        title         |       actor       | price | special | common_prod_id
---------+----------+----------------------+-------------------+-------+---------+----------------
    6775 |        2 | AIRPLANE SEATTLE     | LISA TURNER       | 20.99 |       0 |         449863
    6944 |        6 | AIRPLANE VIRGIN      | LISA SINATRA      | 23.99 |       0 |         397913
    7056 |       13 | AIRPORT BAREFOOT     | LISA BACALL       | 29.99 |       0 |         175242
    7064 |        6 | AIRPORT BEETHOVEN    | LISA OLIVIER      | 15.99 |       0 |         446202
    7096 |        3 | AIRPORT BREAKING     | LISA LOLLOBRIGIDA |  9.99 |       0 |         694809
    7332 |       15 | AIRPORT FRANKENSTEIN | LISA CLOSE        | 28.99 |       0 |         379655
    7850 |        3 | AIRPORT STORY        | LISA MARTIN       | 24.99 |       0 |         924982
    8009 |       13 | ALABAMA ALABAMA      | LISA BOGART       | 28.99 |       0 |         902136
    8013 |       16 | ALABAMA ALI          | LISA BERGMAN      | 22.99 |       0 |         758305
    8041 |       11 | ALABAMA ARSENIC      | LISA MOORE        | 28.99 |       0 |          85891
(10 rows)

Je suis sur une version 9.2

Que se passe t'il ?

Merci

Dernière modification par pitpoule (20/06/2013 10:34:24)

Hors ligne

#2 20/06/2013 11:39:18

gleu
Administrateur

Re : [NEWBIE] Recherche plein texte qui ne retourne pas ce que j'attends...

Aucune idée. Ça fonctionne parfaitement pour moi.

dellstore2=# select browse_by_actor(10,'LISA');
                       browse_by_actor                       
-------------------------------------------------------------
 (6,9,"ACADEMY AGENT","LISA SPACEK",15.99,0,5243)
 (241,13,"ACADEMY DONNIE","LISA TANDY",18.99,0,5463)
 (243,16,"ACADEMY DOORS","LISA KEATON",24.99,1,4739)
 (520,13,"ACADEMY LICENSE","LISA LOLLOBRIGIDA",22.99,0,2144)
 (694,1,"ACADEMY PREJUDICE","LISA NOLTE",24.99,0,4408)
 (708,4,"ACADEMY QUILLS","LISA RYAN",9.99,0,2916)
 (780,14,"ACADEMY SENSIBILITY","LISA KAHN",21.99,0,3881)
 (935,2,"ACADEMY VANISHED","LISA DRIVER",22.99,0,7792)
 (1185,16,"ACE COWBOY","LISA LOLLOBRIGIDA",15.99,0,453)
 (1254,7,"ACE DRIVER","LISA GARBO",11.99,0,5399)
(10 rows)

Vous avez dû faire d'autre chose, comme ne pas utiliser lle bon encodage ou changer la configuration 'simple'.


Guillaume.

Hors ligne

#3 20/06/2013 12:01:58

kenrio
Membre

Re : [NEWBIE] Recherche plein texte qui ne retourne pas ce que j'attends...

j'ai installé la base pour m'amuser, j'ai la même erreur voici la configuration de la bdd :

CREATE DATABASE dellstore3
  WITH OWNER = seb
       ENCODING = 'LATIN1'
       TABLESPACE = pg_default
       LC_COLLATE = 'C'
       LC_CTYPE = 'C'
       CONNECTION LIMIT = -1;

j'ai pas touché a la configuration simple

Dernière modification par kenrio (20/06/2013 12:03:31)

Hors ligne

#4 20/06/2013 13:45:04

pitpoule
Membre

Re : [NEWBIE] Recherche plein texte qui ne retourne pas ce que j'attends...

Moi, j'ai utilisé les scripts généraux (ds2.tar.gz) pour créer une base de 1Gb. Les infos de ma base

Name              | ds2
Owner             | ds2
Encoding          | UTF8
Collate           | fr_FR.UTF-8
Ctype             | fr_FR.UTF-8
Access privileges |
Size              | 1624 MB
Tablespace        | pg_default

Hors ligne

Pied de page des forums