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

Php 与Mysql数据库表进行比较的文本搜索,php,mysql,database,text,Php,Mysql,Database,Text,假设我有一个包含单词的字符串。其中有些词可能是复合词 我还有一个MySQL数据库,其中包含一个表,其中包含一个名为words的列。此列可能包含出现在我的字符串中的单词,包括复合词 当我只有字符串时,我希望能够找到要从数据库中检索的行。在空格字符上拆分它不是一个选项,因为这将无法检测数据库中是否有任何复合词出现在字符串中 关于如何解决这个问题有什么建议吗?我相信您指的是输入字符串和DB记录之间的相关性。这更适合Lucene/SOLR这样的解决方案 也就是说,通过使用全文索引和搜索,您可能会获得一些

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

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

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


关于如何解决这个问题有什么建议吗?

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

也就是说,通过使用全文索引和搜索,您可能会获得一些好处:


您可以通过以下方法完成此操作。假设字符串中有空格作为分隔符,并且从不包含逗号

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

不是相关性,只是发生的情况。字符串“My car rams The tree.”以及包含值“car”和“tree”的表都希望返回与这些值对应的两行。我想我将尝试使用正则表达式。真傻,我自己也没想过。
select *
from words w
where concat(',', <your string>, ',') REGEXP concat('[ ,.!?]', w.word, '[ ,.!?]')