我在大学的主要项目中使用 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%';