我很想知道人们的想法,我们有一个非常小的开发团队,而且现场没有真正的(核心)数据库专业知识。
我们正在确定一个需要“智能搜索”的新项目,这意味着他们指定了模糊搜索,例如:
个人记录(由于交易要求而在innodb内持有)
- 名字(varchar)
- 姓氏(varchar)
- EmailAddress(varchar)
- Lastlogin(日期时间 - 每次登录时更新)
- LastOrder(日期时间 - 接受订单时更新)
他们希望能够搜索任何或多个字段,包括日期列的范围和varchars的部分完成,例如:
- 名字+ lastOrder
- “史蒂夫”将返回所有与史蒂夫和史蒂文一起乞讨的名字(如?)
- 姓氏+ EmailAddress + LastLogin
- 2011-01-01和2012-01-01之间的Lastlogin
- Lastorder< 2012-01-01
我理解这些例子中的一些是相当具体的,“应该”总是只返回一行,但它是要求的一个例子而不是确切的结构。
我们正在决定如何最好地实施它,没有人能够同意(像往常一样!)我很想知道其他人如何实现这一功能以及为什么他们选择了这个解决方案。
笨重的查询:
SELECT
(Firstname LIKE “Steve%”) as fn_matched_data
(Lastlogin BETWEEN 2011-01-01 AND 2012-01-01) as ll_matched_data
FROM TABLE
WHERE Firstname LIKE “Steve%” OR Lastlogin BETWEEN 2011-01-01 AND 2012-01-01
我知道存在相互矛盾的规范 - 想要同时搜索所有内容,同时应用范围等。我真的想告诉业务我们不是谷歌并降低他们对搜索要求的期望。
提前致谢。