Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.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# 什么';实现搜索的最佳方式是什么?_C#_.net_Sql Server_Search - Fatal编程技术网

C# 什么';实现搜索的最佳方式是什么?

C# 什么';实现搜索的最佳方式是什么?,c#,.net,sql-server,search,C#,.net,Sql Server,Search,我有一个要求,用户在搜索框中输入一些术语,然后单击“go”。 在如何实现跨越几个数据库表的动态搜索方面,有人有什么好的资源吗 谢谢, Mike它被称为全文搜索 它被称为全文搜索 您可以创建一个SP,接收作为参数的搜索词,并将一些“选择”(记录集)重新运行到启动的程序中。它可以为每个表返回一个select,您可以根据需要对应用程序代码中的数据执行任何操作 如果只需要接收数据集,则可以使用表的并集创建视图,以合并公共架构中的列,然后以相同的方式过滤视图。在应用程序中,您将只收到一个数据集,其中包含在

我有一个要求,用户在搜索框中输入一些术语,然后单击“go”。 在如何实现跨越几个数据库表的动态搜索方面,有人有什么好的资源吗

谢谢,
Mike

它被称为
全文搜索


它被称为
全文搜索


您可以创建一个SP,接收作为参数的搜索词,并将一些“选择”(记录集)重新运行到启动的程序中。它可以为每个表返回一个select,您可以根据需要对应用程序代码中的数据执行任何操作


如果只需要接收数据集,则可以使用表的并集创建视图,以合并公共架构中的列,然后以相同的方式过滤视图。在应用程序中,您将只收到一个数据集,其中包含在视图中合并并过滤的所有信息。

您可以创建一个SP,该SP接收搜索词作为参数,并将一些“选择”(记录集)重新运行到启动的程序中。它可以为每个表返回一个select,您可以根据需要对应用程序代码中的数据执行任何操作


如果只需要接收数据集,则可以使用表的并集创建视图,以合并公共架构中的列,然后以相同的方式过滤视图。在应用程序中,您只会收到一个数据集,其中包含在视图中合并并过滤的所有信息。

鉴于缺乏详细信息,这是一个非常复杂的问题。如果您只需要在几个表/列上进行简单搜索,那么一个单一的搜索SP就足够了

也就是说,如果您需要更多功能,例如:

  • 搜索一大组表
  • 支持大量数据
  • 搜索单词的形式
  • 逻辑运算
然后,您可能希望查看全文搜索(它是MS Sql 2000及更高版本的一部分)。最初的投资,以获得与全文搜索速度可以有点抵消,但与实施上述功能相比,你可能会节省大量的时间和精力

以下是一些全文搜索链接,以帮助您开始:


希望这能有所帮助。

鉴于缺乏细节,这是一个相当复杂的问题。如果您只需要在几个表/列上进行简单搜索,那么一个单一的搜索SP就足够了

也就是说,如果您需要更多功能,例如:

  • 搜索一大组表
  • 支持大量数据
  • 搜索单词的形式
  • 逻辑运算
然后,您可能希望查看全文搜索(它是MS Sql 2000及更高版本的一部分)。最初的投资,以获得与全文搜索速度可以有点抵消,但与实施上述功能相比,你可能会节省大量的时间和精力

以下是一些全文搜索链接,以帮助您开始:


希望这能有所帮助。

我要投你的一票。虽然SQLServer确实提供全文索引和一些搜索功能,但它并不是最好的搜索引擎。根据我的经验,它不会提供最好的结果或结果排名,除非你有大量的索引项(最少几万到几十万)

相比之下,Lucene显然是一个搜索引擎。这是一个反向索引,其行为非常类似于普通的互联网搜索引擎。Lucene提供了一个非常丰富的索引和搜索平台,以及一些用于查询索引的丰富C#和.NET API。甚至还有一个LINQtoLucene提供程序,允许您使用LINQ查询Lucene索引


使用Lucene的一个缺点是必须构建索引,这是一个独立于数据库运行的边带进程。您还必须编写自己的工具来管理索引。根据更新频率的不同,您的搜索索引可能不是100%最新的。一般来说,这不是一个很大的问题,但是如果你有足够的资源,Lucene索引将每隔几分钟递增更新一次,以保持“新鲜”

我要投你一票。虽然SQLServer确实提供全文索引和一些搜索功能,但它并不是最好的搜索引擎。根据我的经验,它不会提供最好的结果或结果排名,除非你有大量的索引项(最少几万到几十万)

相比之下,Lucene显然是一个搜索引擎。这是一个反向索引,其行为非常类似于普通的互联网搜索引擎。Lucene提供了一个非常丰富的索引和搜索平台,以及一些用于查询索引的丰富C#和.NET API。甚至还有一个LINQtoLucene提供程序,允许您使用LINQ查询Lucene索引


使用Lucene的一个缺点是必须构建索引,这是一个独立于数据库运行的边带进程。您还必须编写自己的工具来管理索引。根据更新频率的不同,您的搜索索引可能不是100%最新的。一般来说,这不是一个很大的问题,但是如果你有足够的资源,Lucene索引将每隔几分钟递增更新一次,以保持“新鲜”

好的,有一些人要求提供更多信息,所以让我提供一些。 我有几个表(即用户、公司、地址),我希望用户能够输入如下内容:

“微软wa盖茨”

并列出一个结果列表,其中包含“盖茨”、“微软”和“华盛顿”的结果


Lucene看起来很酷。

好的,有一些人要求提供更多信息,所以让我提供一些。 我有几个表(即用户、公司、地址),我希望用户能够