Comment puis-je créer des requêtes sql pour rechercher les correspondances partielles?
J'ai un ensemble d'éléments en db .Chaque item
a un name and a description
.J'ai besoin de mettre en œuvre un search
établissement qui prend un certain nombre de mots-clés et retourne articles distincts qui ont au moins l'un des mots-clés correspondant à un mot dans le nom or
description.
par exemple
Je l'ai dans la db ,trois éléments
1.item1 :
name : magic marker
description: a writing device which makes erasable marks on whiteboard
2.item2:
name: pall mall cigarettes
description: cigarette named after a street in london
3.item3:
name: XPigment Liner
description: for writing and drawing
Une recherche en utilisant le mot-clé "l'écriture" doit retourner marqueur magique et XPigment Liner
Une recherche à l'aide du mot clé 'mall' doit retourner le deuxième élément
J'ai essayé d'utiliser le LIKE
mot-clé et IN
mot-clé séparément ,..
Pour IN
mot clé de travail,la requête doit être
SELECT DISTINCT FROM mytable WHERE name IN ('pall mall cigarettes')
mais
SELECT DISTINCT FROM mytable WHERE name IN ('mall')
renvoie 0 lignes
Je ne pouvais pas comprendre comment faire une requête qui peut accueillir à la fois le nom et la description des colonnes et permet à la partie de mot de match..
Quelqu'un peut-il aider?
mise à jour:
J'ai créé la table à l'aide d'hibernate et pour le champ description, utilisé javax.la persistance @Lob annotation.À l'aide de psql lorsque j'ai examiné le tableau,Il est indiqué
...
id | bigint | not null
description | text |
name | character varying(255) |
...
L'un des enregistrements dans la table, c'est comme,
id | description | name
21 | 133414 | magic marker
Tout d'abord, vous devez comprendre ce que la table de la description textuelle est stocké.
est-il possible de savoir qui?J'utilise postgres..ne pouvais pas trouver beaucoup d'aide de la /d commandes
OriginalL'auteur Damon Julian | 2011-08-24
Vous devez vous connecter pour publier un commentaire.
Tout d'abord, cette approche ne sera pas à l'échelle de la grande, vous aurez besoin d'un autre indice de la parole à l'élément (par exemple un index inversé).
Si vos données n'est pas grand, vous pouvez le faire
à l'aide de
OR
si vous avez plusieurs mots-clés.select distinct name from...
Vous devez être conscient de la sensibilité de cas.
Dans la bd,je suis le stockage description javax.la persistance.Lob type..Donc,la db(postgres) table a un certain nombre (133414 etc) que le contenu du champ..La description LIKE '%quelque chose de% de " ne parvient pas à retourner un match..Aucune idée de la façon de traiter ce problème?
OriginalL'auteur stracktracer
Cela peut fonctionner aussi bien.
OriginalL'auteur Narnian