如何实现关键字搜索?

时间:2013-05-21 12:04:39

标签: mysql

我有一个项目数据库,我希望能够使用预定义的关键字进行搜索。

我现在拥有的是这样的三张桌子:

Items_tbl:

  

item_idx,item(UNIQUE),description等

Keyword_tbl:

  

kw_idx,kw(UNIQUE),kw_description

Cross_tbl:

  

item_idx,kw_idx。

我想做“和”搜索... 喜欢...给我(不同的)每个项目都有关键字“海蓝宝石”,“蓝色”和“绿色”。即“海蓝宝石”& “蓝色”& “绿色”......

搜索“或”搜索非常简单,但是我很难做这样的“和”搜索......在这个例子中。我想找到同时包含“蓝色”和“绿色”的商品,而不是只有“绿色”的商品。

2 个答案:

答案 0 :(得分:0)

SELECT   Items_tbl.*
FROM     Items_tbl
    JOIN Cross_tbl   USING (item_idx)
    JOIN Keyword_tbl USING (kw_idx)
WHERE    kw_description IN ('aquamarine','blue','green')
GROUP BY item_idx
HAVING   COUNT(*) = 3

这假设关键字最多只能与项目关联一次(即UNIQUE(item_idx, kw_idx)的{​​{1}}约束;如果不是这种情况,则必须将Cross_tbl替换为效率较低的COUNT(*),如果相同的关键字在{{1}中多次出现,则效率更低COUNT(DISTINCT kw_idx) }(即COUNT(DISTINCT kw_description)列上没有Keyword_tbl约束。)

答案 1 :(得分:0)

查询每个关键字的源表。

select * from YourTable where YourColumn like '%keyword%' and YourColumn like '%foo%';