【问题标题】:PHP Searching email database for emailaddress and body contents based on arbitrary search queryPHP基于任意搜索查询在电子邮件数据库中搜索电子邮件地址和正文内容
【发布时间】:2013-06-01 01:49:13
【问题描述】:

我正在开发一个电子邮件应用程序。这是背景:

  • 电子邮件地址存储在addresses 表中
  • 消息内容存储在message_contents 表中

页面顶部有一个搜索栏,操作流程将是用户键入以下内容,例如:Jonathan Kushner programming,它会向下钻取到在这种情况下它所在的位置一封电子邮件,地址中包含 Jonathan Kushner,邮件正文中包含“programming”一词。

这就是问题所在。目前,我正在对匹配用户查询的电子邮件地址执行 MySQL LIKES,以及对匹配用户查询的消息内容执行 MySQL LIKES。问题是,就我们的示例而言,它永远不会找到与Jonathan Kushner programming 匹配的电子邮件地址,并且它不会匹配任何显示Jonathan Kushner programming 的正文内容。

因此,话虽如此,我需要完成的是能够以某种方式识别查询输入并发现什么是名称和什么是正文内容。我无法理解我是世界上第一个将地址与数据库中的正文内容分开的人,所以它肯定是可能的。

也许我应该设置它,这样用户必须在查询的第一个单词中输入姓名或电子邮件地址,然后在 X 个单词之后,他们才能输入内容中的关键字。我真的不喜欢这个想法,它不能工作,因为如果用户没有名字或电子邮件地址来搜索整个理论是失败的,但我只是不知道如何解决这个问题。

另一个想法是可能分离单词并对每个单词和单词组合执行逻辑。

任何帮助将不胜感激。

【问题讨论】:

  • 查看 Outlook 或 gmail,搜索时指定搜索邮件正文或电子邮件地址或姓名,我认为这是更好的方法

标签: php mysql email search full-text-search


【解决方案1】:

我为电子商务搜索功能做了类似的事情,我将单词拆分,然后使用循环将单词添加到查询中。

WHERE address LIKE '%$search[0]%' OR address LIKE '%$search[1]%' OR contents LIKE '%$search[0]%'

希望这很有用,在进入代码之前,我会先尝试一些查询,看看什么是有效的。当您开始编写代码时,我建议您将搜索查询拆分为一组单词,然后使用 foreach 循环将它们添加到查询中。

玩得开心,让我知道你过得怎么样!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 2018-07-07
    • 1970-01-01
    • 2020-12-04
    • 2019-12-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多