【问题标题】:How do I build a search mechanism for my application?如何为我的应用程序构建搜索机制?
【发布时间】:2010-09-28 06:05:48
【问题描述】:

如今,拥有几乎可以搜索您想要的任何内容的搜索功能似乎是一个普遍的要求。谁能给我一些示例或提示,说明如何为应用程序构建一站式搜索?

例如:您有 3 个表客户、产品、员工。该应用程序有一个母版页,其右上角有一个文本框,与您在 stackoverflow 上的非常相似。

我如何搜索“凤凰”一词并获得类似

的结果

客户

Result 1
......

产品

Result 1
......

员工

Result 1
......

非常感谢任何提示、教程和提示。我的环境是Win2k3,.net3.5,C#,ASP.net。

编辑:特别关注性能和可扩展性。

提前致谢!

【问题讨论】:

    标签: c# asp.net sql-server linq search


    【解决方案1】:

    一种方法是发送至find the searched value in all tables in the database。当然,可以更改此代码以专注于特定的表和列。

    【讨论】:

      【解决方案2】:

      Xapian 是一个开源搜索引擎库,其中包含您正在寻找的 features

      【讨论】:

      • Xapian 是否将 DBMS 的数据与 DBMS 自己的数据存储区分开来?粗略浏览一下功能列表就知道发生了什么。
      • 我相信 Xapian 维护自己的数据结构/数据库用于索引。
      【解决方案3】:

      Lucene.NET 是一个非常快速的全文搜索引擎。

      示例用法:

      参见Source codeDotNetKickscodebehind of search page 开始

      【讨论】:

        【解决方案4】:

        跟进fall888的回答:

        您可以创建一个类,其方法采用数组或搜索关键字列表作为输入。创建与每个表相关的 LINQ 查询,例如,以this blogpost 中解释的某些方式使用“LIKE”运算符来搜索正确的列以查找匹配的内容。当然,这不会很优化,但适用于小型系统:)

        【讨论】:

          【解决方案5】:

          如果您想要真正可扩展的东西,我想您必须首先构建一个数据字典,列出数据库中的每个表和每个列。这样的表的构建可以是fully automated

          您将在此表中指明哪些字段可用于直接搜索或软(带有通配符)搜索。

          然后,您将能够构建一些漂亮而智能的用户界面,机器将能够找到诸如 '*823*' 之类的代码同时引用 'INV-0823456''INV-0880823' 发票号码,只要发票数字字段可用于软搜索。用户甚至可以选择搜索哪些列,因为扫描数据库中的所有电话号码可能并不总是有意义的。

          您不应该尝试索引所有可搜索的列。就磁盘卷\服务器开销而言,“全索引”策略可能会变得非常昂贵,并且对于很少搜索的列并不总是有意义的。不用太担心:用户不会介意延迟得到答案。

          【讨论】:

          • 似乎是我可能需要走的路。
          • 有这么多现有的工具可以很好地完成全文索引(包括 Lucene.NET 和 SQLServer 自己的全文搜索),我强烈建议不要编写自己的搜索引擎除了最不寻常的情况。
          【解决方案6】:

          如果您将 SQL Server 用于您的数据库,那么您可以尝试 SQL 的全文搜索。我已经用得很成功了。

          【讨论】:

            【解决方案7】:

            如果您想要一站式搜索解决方案并希望在几分钟内在您的网站或博客上进行搜索,您可以随时使用BuildaSearch。 BuildaSearch 使自定义搜索创建快速而简单。只需复制并粘贴您的自定义 javascript 代码,您就可以立即在您的网站上使用功能齐全的自定义搜索。该搜索服务最有趣的特点是您无需编写一行代码,并且可以在任何 Web 服务器环境中工作。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2023-03-12
              • 1970-01-01
              • 2017-10-21
              • 1970-01-01
              • 2023-04-01
              • 1970-01-01
              相关资源
              最近更新 更多