C# 索引搜索功能

C# 索引搜索功能,c#,.net,search-engine,C#,.net,Search Engine,我想在我正在开发的软件中添加一个研究功能。其想法是添加某种“索引”研究,这样当用户在另一个文本框中键入内容时,gui组件将显示过滤后的结果。例: User types: a aaa aba aab user types: aa aa aab 等等。 当然这个东西有一个名字(因为它几乎在任何地方都被使用),但是我不知道它,所以直到现在我在网上都找不到任何有用的东西。我不需要确切的代码,只需要一些参考资料的链接(教程等)。泰 编辑:我不是在寻找自动完成功能:如果我在文本框中键入内容,我希望在文本

我想在我正在开发的软件中添加一个研究功能。其想法是添加某种“索引”研究,这样当用户在另一个文本框中键入内容时,gui组件将显示过滤后的结果。例:

User types: a
aaa
aba
aab

user types: aa
aa
aab
等等。 当然这个东西有一个名字(因为它几乎在任何地方都被使用),但是我不知道它,所以直到现在我在网上都找不到任何有用的东西。我不需要确切的代码,只需要一些参考资料的链接(教程等)。泰


编辑:我不是在寻找自动完成功能:如果我在文本框中键入内容,我希望在文本框附近的列表框中看到所有过滤结果。

您尝试执行的操作被称为(或者是它的一种变体,您只是在动态过滤列表),这是一个非常常见的功能

它要求您能够快速查找数据,因为您必须能够在输入形成时更新列表。当然,输入可以以击键的形式出现,有些人打字速度非常快

如果您的列表包含在内存中,并且非常小,那么您最好的选择可能是在列表中筛选搜索条件(我将参考框中键入的内容)

如果您的列表未包含在内存中,那么您需要以某种方式为数据编制索引。一般来说,数据库不适合做这类事情。有些有文本索引(SQLServer有),如果这符合您的需要,您可以查询它

如果您不使用数据库,那么您可能需要考虑使用索引来索引内容。如果您的内容足够小,我建议使用,否则,标准(基于文件)就可以了

对于Lucene,您将希望使用(它可能包含在最新版本中,我不确定);这是一个n-gram过滤器,它通过字符标记项目,因此基本上,您可以搜索前几个字符(搜索条件)并获得结果

无论采用何种方法,都需要考虑输入的速度。如果每次按下一个键时都执行查找,那么将有大量永远不会应用的请求

通常,您可能希望在搜索条件超过两个字符后开始搜索。此外,跟踪提出的请求数量;如果您有一个返回的请求,并且已经提交了新的输入,请取消旧请求并提交新请求,旧请求中的值将不会被使用


对于UI组件,最好让其他组件供应商来处理;WinForms为
文本框
提供了自动完成机制,Silverlight在Silverlight工具箱中提供了自动完成机制,jQuery为网页提供了自动完成机制。使用其中一种方法,并使用上述指导原则将数据随机移动到控件中。

您尝试执行的操作被称为(或者是一种变体,您只是在动态筛选列表),这是一项非常常见的功能

它要求您能够快速查找数据,因为您必须能够在输入形成时更新列表。当然,输入可以以击键的形式出现,有些人打字速度非常快

如果您的列表包含在内存中,并且非常小,那么您最好的选择可能是在列表中筛选搜索条件(我将参考框中键入的内容)

如果您的列表未包含在内存中,那么您需要以某种方式为数据编制索引。一般来说,数据库不适合做这类事情。有些有文本索引(SQLServer有),如果这符合您的需要,您可以查询它

如果您不使用数据库,那么您可能需要考虑使用索引来索引内容。如果您的内容足够小,我建议使用,否则,标准(基于文件)就可以了

对于Lucene,您将希望使用(它可能包含在最新版本中,我不确定);这是一个n-gram过滤器,它通过字符标记项目,因此基本上,您可以搜索前几个字符(搜索条件)并获得结果

无论采用何种方法,都需要考虑输入的速度。如果每次按下一个键时都执行查找,那么将有大量永远不会应用的请求

通常,您可能希望在搜索条件超过两个字符后开始搜索。此外,跟踪提出的请求数量;如果您有一个返回的请求,并且已经提交了新的输入,请取消旧请求并提交新请求,旧请求中的值将不会被使用


对于UI组件,最好让其他组件供应商来处理;WinForms为
文本框
提供了自动完成机制,Silverlight在Silverlight工具箱中提供了自动完成机制,jQuery为网页提供了自动完成机制。使用其中一个,并使用上述指导原则将数据随机移动到控件中。

如果您谈论的是WinForms文本框,那么您可以查看文本框的AutoMCompleMode和AutoCompleteCustomSource属性。

如果您谈论的是WinForms文本框,然后,您可以查看文本框的AutomcCompleteMode和AutoCompleteCustomSource属性。

这听起来像是“Autocomplete”。对。那么,您是在寻找自动完成功能,即在用户键入时在列表中查找元素,还是在数据源上实际执行索引搜索?不同的东西。在数据源上的索引搜索听起来像我在搜索的东西。是的,我正在使用数据库。你可以试试Xapian。它是开源的,有C#绑定。对我来说这听起来像“自动完成”。那么,您是否在寻找自动完成功能,即在用户键入或输入时在列表中查找元素