MySQL列文本比较搜索

时间:2014-03-25 07:38:57

标签: mysql

我有一个MySQL表,它有一个类别列和一个关键字列。类别列可以具有以下两个值之一:category1或category2。 category1中的记录在关键字列中有多个单词,category2中的记录在关键字列中有单个单词。

我需要找到category1中的所有记录,其中关键字包含category2中的关键字作为整个单词。

例如:

id  category   keyword

1  category1  word1 word2
2  category1  word2 word3
3  category1  word2 word4
4  category2  word1
5  category2  word3

在此示例中,将检索记录1和2。

我尝试了以下查询:

select sn1.category, sn1.keyword 
from keyword_set sn1 
join keyword_set sn2 
on (
sn1.keyword like concat(sn2.keyword, ' %') or 
sn1.keyword like concat('% ', sn2.keyword, ' %') or
sn1.keyword like concat('% ', sn2.keyword)
)
where sn1.category = category1 
and sn2.caegory = category2

这有效,但对于大量记录而言太慢了。

我也尝试了REGEXP '[[:<:]]word[[:>:]]'类型搜索,但速度也太慢了。

我在关键字列上有一个索引。

有没有办法有效地做到这一点?

0 个答案:

没有答案