【发布时间】:2011-11-02 15:07:18
【问题描述】:
我在 db 中有一组项目。每个 item 都有一个 name and a description。我需要实现一个 search 设施,它接受许多关键字并返回至少有一个关键字匹配的不同项目名称中的一个词or 描述。
例如 我在数据库中,三个项目
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
使用关键字“写作”的搜索应返回魔术标记和 XPigment Liner
使用关键字“mall”进行搜索应返回第二项
我尝试分别使用LIKE 关键字和IN 关键字,..
要使IN 关键字起作用,查询必须是
SELECT DISTINCT FROM mytable WHERE name IN ('pall mall cigarettes')
但是
SELECT DISTINCT FROM mytable WHERE name IN ('mall')
将返回 0 行
我不知道如何进行同时容纳名称和描述列并允许部分单词匹配的查询..
有人可以帮忙吗?
更新:
我通过hibernate创建了表,对于描述字段,使用了javax.persistence @Lob注解。当我检查表时使用psql,它显示了
...
id | bigint | not null
description | text |
name | character varying(255) |
...
表中的一条记录是这样的,
id | description | name
21 | 133414 | magic marker
【问题讨论】:
-
您需要使用 LIKE 而不是 IN。 IN 用于从集合中找出值。 LIKE 应该用于部分字符串比较。
-
首先,你需要弄清楚文字描述存储在哪个表中。
-
有什么办法可以找出来吗?我正在使用 postgres.. 使用 /d 命令找不到太多内容