有人能建议一种从字符串中查找单词的方法吗


Could Anyone Suggest a Way to Find Words From A string?

我在大学的主要项目中使用PHP/MYSQL。这是我做的一个搜索引擎。

我的数据库包含这句话"who is the first president of america"的结果。

我的问题是,当用户在没有空白的情况下输入相同的查询(例如:"whoisthefirstpresidentofamerica")时,我的搜索引擎无法从数据库中检索结果。

是否可以从不包含空格的字符串中查找单词?

您可以通过从两个字符串中删除所有空格来进行比较:

select *
from t
where replace(t.col, ' ', '') = replace(@Val, ' ', '')

然而,我怀疑您想要使用MySQL的全文搜索功能。如果你在处理句子,这是迄今为止更好的方法。你可以在这里开始了解它们。

编辑:

如果你的目的是研究不同的排名算法,那么你需要学习文本搜索和分析。一个很好的起点是MySQL文档的全文搜索。然而,它并不能让你很容易地自定义排名方法。

特别是,您应该以"文档术语"格式存储文本。也就是说,将一个句子分成多行,句子中的每个术语一行,还有一个单词位置列。这将为您提供调查自己的排名算法所需的灵活性。

使用LIKE关键字

select * from tablename where fieldname LIKE 'value%';