如何创建比简单匹配和搜索更好的搜索算法


how to create a better search algorithm than just simple match and search

哪种算法最适合以下情况:

假设用户在搜索框中输入:- Dell Computers但在数据库中不存在这个词存在的是-戴尔或者只是:-电脑那么如何/什么算法可以为上述场景工作。步骤:

1) Find to see if an exact match exists for "Dell Computers"
2) If not, then check for each word like "Dell" and "Computers"

此外,我想在PHP中实现这一点。有什么办法吗?

这在全文搜索领域已经被广泛使用。看看Lucene, ElasticSearch, MySQL全文搜索,或PostgreSQL全文搜索。

基本思想是创建一个指向文章/文档结果集的单个关键字的树,然后分别查找每个词,并对结果进行一组交集以查找匹配这两个词的文章——如果没有好的交集,则返回到单个结果集。

添加查找词的词干,您正在重新实现Lucene和朋友的路上。