搜索文本以与Mysql数据库表进行比较

时间:2013-05-19 16:31:04

标签: php mysql database text

假设我有一个包含单词的字符串。其中一些词可能是复合词。

我还有一个MySQL数据库,其中包含一个包含一个名为words的列的表。此列可能包含出现在我的字符串中的单词,包括复合词。

我希望能够找到从数据库中检索哪些行,当我只有字符串时。将它拆分为空格字符不是一种选择,因为这将无法检测数据库中是否出现任何复合词。

有关如何解决此问题的任何建议吗?

2 个答案:

答案 0 :(得分:0)

我相信您指的是输入字符串和数据库记录之间的相关性。这更适合像Lucene / SOLR这样的解决方案。

也就是说,使用FULLTEXT索引和搜索可能会有一些里程:

http://dev.mysql.com/doc/refman/5.5/en/fulltext-natural-language.html

答案 1 :(得分:0)

您可以使用以下方法执行此操作。假设您的字符串有空格作为分隔符,并且从不包含逗号。

select *
from words w
where find_in_set(w.word, replace(<your string>, ' ', ',')) > 0;

如果你的字符串中的分隔符有点复杂 - 比如它确实有标点符号,那么使用regexp而不是find_in_set可能会更好:

select *
from words w
where concat(',', <your string>, ',') REGEXP concat('[ ,.!?]', w.word, '[ ,.!?]')