【问题标题】:Advice on writing a search function with PHP and MySQL使用 PHP 和 MySQL 编写搜索函数的建议
【发布时间】:2010-12-15 15:41:44
【问题描述】:

我正在开发一个 Web 应用程序,其中一部分包含允许用户在数据库中的 7 个表中搜索多个字段的功能。

用户可以搜索(例如)

名字 - 文字
姓氏 - 文字
高度 - 选择
最低年龄 - 选择
年龄最大值 - 选择
最喜欢的颜色 - 选择
大学 - 选择

...还有更多

HTML 搜索表单将包含文本字段、许多选择下拉菜单和一些复选框。

谁能提供任何建议、最佳实践、设计模式或资源来帮助解决此类问题。

非常感谢。

【问题讨论】:

  • 我会选择 Zend_Search_Lucene 或其他搜索引擎

标签: php mysql design-patterns search


【解决方案1】:

您需要在 sql 和通配符搜索字符中使用LIKE 运算符。

SELECT
  * 
FROM
  users
WHERE
  first_name LIKE '%".$first_name."%' ||
  age > '".$age."'

【讨论】:

【解决方案2】:

我不会尝试在 SQL 中构建关键字搜索功能。您应该阅读 MySQL 的内置全文搜索功能。尝试通过基本 SQL 进行全面搜索会很耗时,并且在运行时会变得迟缓。

全文搜索的基本思想是结合两个系统。首先是索引器,它读取您的数据库中的关键字并创建它们的“索引”。其次是 Searcher,它通过 Indexer 创建的目录来查找搜索结果。

有第三方工具 - Lucene、Xapian、Sphinx - 打包了自己的索引器/搜索器。我已经使用 Xapian 取得了一些成功。

【讨论】:

  • 是的,我明白你的意思,但在这种情况下,他们不会搜索任何大块文本,所以这可能是矫枉过正,大多数字段将是 == 而不是 LIKE
  • 你是对的。我没有仔细阅读这个问题。您的 UI 足够具体,SQL 搜索应该不会太糟糕。
【解决方案3】:

HTML 搜索表单将包含文本字段、许多选择下拉菜单和一些复选框。 谁能提供任何建议、最佳实践、设计模式或资源来帮助解决此类问题。

我建议 Google 为搜索提供最佳 UI。不要给我很多繁琐的字段,只要一个文本字段,我就可以输入“Shirley Jones UAF”

【讨论】:

  • 不幸的是,这根本没有回答这个问题。 Google 的搜索主要是在大块文本中搜索关键字。我的不是这样的。
  • 您确定您的用户更喜欢更复杂的表单吗?如今,大多数网站在右上角都有一个单字段文本搜索,可能是用户几乎不使用的“高级搜索”。
  • 它是一个非常具体的网络应用程序,允许人们根据一些标准选择工作人员
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-05
相关资源
最近更新 更多