Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用于搜索多个列的MySQL索引_C#_Asp.net_Mysql_Full Text Search - Fatal编程技术网

C# 用于搜索多个列的MySQL索引

C# 用于搜索多个列的MySQL索引,c#,asp.net,mysql,full-text-search,C#,Asp.net,Mysql,Full Text Search,我很想知道人们怎么想,我们有一个非常小的开发团队,现场没有真正的(核心)数据库专业知识 我们正在确定一个新项目的范围,该项目要求“智能搜索”,这意味着他们指定了模糊搜索,例如: 个人记录(由于事务性要求而保存在innodb中) 名字(varchar) Lastname(varchar) 电子邮件地址(varchar) Lastlogin(日期时间–每次登录时更新) LastOrder(datetime–接受订单时更新) 他们希望能够搜索任何或多个字段,包括日期列的范围和varchars的部分

我很想知道人们怎么想,我们有一个非常小的开发团队,现场没有真正的(核心)数据库专业知识

我们正在确定一个新项目的范围,该项目要求“智能搜索”,这意味着他们指定了模糊搜索,例如:

个人记录(由于事务性要求而保存在innodb中)

  • 名字(varchar)
  • Lastname(varchar)
  • 电子邮件地址(varchar)
  • Lastlogin(日期时间–每次登录时更新)
  • LastOrder(datetime–接受订单时更新)
他们希望能够搜索任何或多个字段,包括日期列的范围和varchars的部分完成,例如:

  • Firstname+lastOrder
  • “Steve”会返回所有与Steve一起乞讨的名字,比如“Steve和Steven”(比如?)
  • Lastname+EmailAddress+LastLogin
  • 2011-01-01和2012-01-01之间的最后登录
  • 最新订单<2012-01-01
我理解其中一些示例非常具体,“应该”总是只返回一行,但这是一个需求示例,而不是确切的结构

我们正在决定如何最好地实现它,没有人会同意(像往常一样!)我很想听听其他人是如何在功能上实现这一点的,以及他们为什么选择这个解决方案

  • 为每一列编制索引—不是很理想,内存使用量也很大
  • 复合索引–无法预测要搜索的列的顺序或数量
  • 在MyISAM中创建一个条目并使用完整索引,例如“MyFirstName MyLastName”me@mycompany.com“–下行无法比较日期范围
  • 使用lucene.net或类似的索引服务(很难在我们的3个面向web的IIS服务器上实现,类似于#3)
  • 视图可容纳各种数据–缺点是,需要索引和更多内存/CPU使用,但没有真正的好处
  • 笨拙的查询:

    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
    
  • 我知道存在相互冲突的规范-希望搜索所有内容,同时应用范围等。我真的想告诉企业我们不是谷歌,并降低他们对搜索要求的期望


    谢谢。

    < p>听起来你应该考虑一个专门的外部搜索解决方案,比如

    谢谢,我可能已经暗示过但是没有在问题中指定,我们有3个Windows 2008服务器运行IIS,将主持这个项目。这是一个ASP.NET 4应用程序,因此,虽然这可能涉及添加额外设备。不过我还是要检查一下。Solr在Windows上运行得很好。实际上,它可以在很多平台上运行——我的理解是,即使是iPhone搜索也是solr支持的。例如:我相信mySQL优化器会忽略没有95%唯一性的索引。创建索引时要小心。