如何创建sql查询以搜索部分匹配?
发布时间:2020-12-12 07:48:14 所属栏目:MsSql教程 来源:网络整理
导读:我在db中有一组项目.每个项目都有一个名称和一个描述.我需要实现一个搜索工具,它接受一些关键字并返回至少有一个关键字与名称中的单词匹配的不同项目或描述. 例如 我在db中有三个项目 1.item1 : name : magic marker description: a writing device which mak
我在db中有一组项目.每个项目都有一个名称和一个描述.我需要实现一个搜索工具,它接受一些关键字并返回至少有一个关键字与名称中的单词匹配的不同项目或描述.
例如 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关键字,.. SELECT DISTINCT FROM mytable WHERE name IN ('pall mall cigarettes') 但 SELECT DISTINCT FROM mytable WHERE name IN ('mall') 将返回0行 我无法弄清楚如何使查询适应名称和描述列,并允许部分单词匹配.. 有人可以帮忙吗? 更新: 我通过hibernate创建了表,并且对于description字段,使用了javax.persistence @Lob annotation.Using psql,当我检查表时,它显示了 ... id | bigint | not null description | text | name | character varying(255) | ... 表中的一条记录是, id | description | name 21 | 133414 | magic marker 解决方法首先,这种方法不会扩大规模,你需要从单词到项目的单独索引(如倒排索引).如果您的数据不大,您可以这样做 SELECT DISTINCT(name) FROM mytable WHERE name LIKE '%mall%' OR description LIKE '%mall%' 如果您有多个关键字,请使用OR. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |