我正在开发电子邮件应用程序。这是背景:
- 电子邮件地址存储在
地址
表中 - 消息内容存储在
message_contents
表中
页面顶部有一个搜索栏,操作流程是用户输入以下内容,例如:Jonathan Kushnerprogramming
,它会向下钻取到一个点在这种情况下,它基本上找到了一封电子邮件,地址中包含乔纳森·库什纳 (Jonathan Kushner),邮件正文中包含“编程”一词。
这就是问题所在。目前,我正在对与用户查询匹配的电子邮件地址执行 MySQL LIKES,并对与用户查询匹配的消息内容执行 MySQL LIKES。问题是,就我们的示例而言,它永远不会找到与 Jonathan Kushnerprogramming
匹配的电子邮件地址,也不会与任何表示 Jonathan Kushnerprogramming
的正文内容相匹配.
因此,话虽这么说,我需要完成的是能够以某种方式识别查询输入并发现什么是名称以及什么是正文内容。我无法理解我是世界上第一个将数据库中的地址与正文内容分开的人,所以这肯定是可能的。
也许我应该进行设置,以便用户必须在查询的第一个单词中输入姓名或电子邮件地址,然后在 X 个单词之后,他们可以输入内容中的关键字。我真的不喜欢这个想法,而且它行不通,因为如果用户没有姓名或电子邮件地址来搜索整个理论就会失败,但我只是不确定如何解决这个问题。
另一个想法是可能将单词分开并对每个单词和单词组合执行逻辑。
任何帮助将不胜感激。
最佳答案
我为电子商务搜索功能做了类似的事情,我将单词分开,然后使用循环将单词添加到查询中。
WHERE address LIKE '%$search[0]%' OR address LIKE '%$search[1]%' OR contents LIKE '%$search[0]%'
希望这很有用,在进入代码之前我会尝试一些查询来看看什么有效。当您开始编写代码时,我建议将搜索查询拆分为单词数组,然后使用 foreach 循环将它们添加到查询中。
玩得开心,让我知道你过得怎么样!
关于PHP 基于任意搜索查询在电子邮件数据库中搜索电子邮件地址和正文内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16868290/