注意:如果您不需要存储关键字频率,请使用Marmik Bhatt的LIKE建议.
如果您有大量数据并且只想进行关键字搜索(即您不会搜索短语或使用“近”等概念),那么您只需创建一个关键字表:
CREATE TABLE address
(
id INT(10) PRIMARY KEY,
/* ... */
);
CREATE TABLE keyword
(
word VARCHAR(255),
address_id INT(10),
frequency INT(10),
PRIMARY KEY(word, article_id)
);
然后,您浏览正在“索引”的文本并计算您在那里找到的每个单词.
如果你想做几个关键字:
SELECT address.*, SUM(frequency) frequency_sum
FROM address
INNER JOIN keyword ON keyword.address_id = address.id
WHERE keyword.word IN ('keyword1', 'keyword2', /*...*/)
GROUP BY address.id;
在这里,我已经完成了一个频率和,这可能是一种比较结果有用性的脏方法,当给出很多时.
需要考虑的事情:
>是否要将所有关键字插入数据库中,或仅插入频率高于特定值的那些关键字?如果您插入所有表格可能会变得很大,如果您只插入更高频率的表格,那么您将找不到唯一提及特定单词的文章,但只会这样做一次.>是否要插入特定文章的所有可用关键字或仅插入“顶级”关键字?在这种情况下,危险在于频繁的词语不会增加意思,将开始推动其他人.考虑一下“然而”这个词,它可能在你的文章中比“mysql”多很多次,买它是后者定义的文章,而不是前者.>您是否要排除短于特定字符长度的单词?>你想排除已知的“毫无意义”的词吗?