J'ai un ensemble d'éléments dans db .Chaque item
a une name and a description
.Je besoin de mettre en œuvre une installation search
qui prend un certain nombre de mots-clés et renvoie les éléments distincts qui ont au moins un des mots-clés correspondant à un mot au nom or
Description .Comment créer une requête sql pour rechercher des correspondances partielles?
par exemple j'ai dans le db, trois articles
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 utilisant le mot clé « écriture » doit retourner marqueur magique et XPigment Liner
Une recherche utilisant le mot clé « mail » devrait retourner le deuxième élément
J'ai essayé d'utiliser le mot-clé LIKE
et IN
mot-clé séparément, .. pour IN
mot-clé fonctionne, la requête doit être
SELECT DISTINCT FROM mytable WHERE name IN ('pall mall cigarettes')
mais
SELECT DISTINCT FROM mytable WHERE name IN ('mall')
retournera 0 lignes
Je ne pouvais pas comprendre comment faire une requête qui accueille à la fois les colonnes de nom et de description et permet Troncature ..
Quelqu'un peut-il aider?
mise à jour:
J'ai créé la table par mise en veille prolongée et le champ de description, utilisé psql javax.persistence @Lob de annotation.Using quand j'examiné le tableau, il est montré
...
id | bigint | not null
description | text |
name | character varying(255) |
...
l'un des enregistrements de la table est comme,
id | description | name
21 | 133414 | magic marker
Vous devez utiliser LIKE plutôt qu'IN. IN est utilisé pour trouver des valeurs d'un ensemble. LIKE devrait être utilisé pour les comparaisons de chaînes partielles. – Bruce
Tout d'abord, vous devez comprendre dans quelle table la description textuelle est stockée. –
est-il possible de trouver que? J'utilise postgres.n'a pas trouvé beaucoup en utilisant les commandes/d –