Tag: 搜索

C#binarysearch由T的成员列出

我有一个带有DateTime成员TimeStamp的基类Event 。 许多其他事件类将源于此。 我希望能够快速搜索事件列表,所以我想使用二进制搜索。 (列表数据按时间戳排序,但同时发生的事件可能存在重复的时间戳) 所以我开始写这样的东西: public class EventList : List where T : Event { private IComparer comparer = (x, y) => Comparer.Default.Compare(x.TimeStamp, y.TimeStamp); public IEnumerable EventsBetween(DateTime inFromTime, DateTime inToTime) { // Find the index for the beginning. int index = this.BinarySearch(inFromTime, comparer); // BLAH REST OF IMPLEMENTATION } } 问题是BinarySearch只接受T(所以 – 一个Event类型)作为参数,而我想基于T的成员 – […]

如何找到最接近任意(非成员)数字的数组元素?

看似相似的问题:“ 在数组中查找最接近的数字 ”(在Java中)和“ 找到与双打数组最接近的匹配 ”(实际上是地理问题)。 我有一个(排序的)双打数组。 给定一个任意数字(可能是也可能不是其中一个数组元素的完全匹配),如何返回最接近匹配的数字的索引? 例如,使用以下数组: 1.8 2.4 2.7 3.1 4.5 查询2.5将返回索引为1,对应于2.4的值。 用于检测完全在数组元素范围之外的值的加分点。 例如,使用上面列出的数组,您的代码可能会决定4.6是否在,但是5.9已经完成。 如果您想尝试这部分问题,具体内容掌握在您手中。

获取字典中最大的密钥

我有一个包含整数键的字典。 我想得到最大的钥匙。 我不跟踪密钥,因此它们可能是连续的(例如1,2,3,4,5,6),但可能会跳过(1,3,4,5),尽管我怀疑这有什么不同。 我只是使用二进制搜索还是有方法? 据我所知,你几乎无法击败二元搜索这么简单的任务 – 也许你可以把它减半。

如何在c#中使用Windows搜索服务

我正在处理一个应用程序,用户可以在本地计算机或网络上搜索文件或文件夹。 我正在使用DirectoryInfo.GetDirecotories()。 (a)但我还想添加Windows 7用于搜索的function,我相信它使用索引。 我还在msdn上看过“Windows搜索服务”,但我不确定哪种方式最好,查询索引目录或使用搜索服务,有什么建议吗? (b)我想知道是否有人可以在C#中给我一个搜索索引目录的小例子。 提前致谢。

最快/最安全的文件查找/解析?

在c: ,我有成千上万的*.foobar文件。 他们在各种各样的地方(即子市场)。 这些文件大小约为1-64 kb,并且是纯文本。 我有一个class Foobar(string fileContents)强类型这些.foobar文件。 我的挑战是获取c:上所有*.foobar文件的列表,表示为Foobar对象的数组。 最快的方法是什么? 我很想知道是否有一种比我的第一种方法更好的方式(毫无疑问),如果我的这种方法有任何潜在的问题(例如I / O并发问题抛出exception?): var files = Directory.EnumerateFiles (rootPath, “*.foobar”, SearchOption.AllDirectories); Foobar[] foobars = ( from filePath in files.AsParallel() let contents = File.ReadAllText(filePath) select new Foobar(contents) ) .ToArray();

在datagridview中搜索C#winfom

我想在DataGridView一个搜索选项,即User在TextBox键入字符串或int,类似的记录应该突出显示DataGridView 。 我尝试使用KeyPress事件,但没有工作。 if (Char.IsLetter(e.KeyChar)) { for (int i = 0; i < (dgemployee.Rows.Count); i++) { if (dgemployee.Rows[i].Cells["Employee"].Value.ToString(). StartsWith(e.KeyChar.ToString(), true, CultureInfo.InvariantCulture)) { dgemployee.Rows[i].Cells[0].Selected = true; return; } } 实际上,我需要搜索整个DataGridView ,而不仅仅是一列和一行。 那么最好的解决方案呢

如何在Lucene.net中执行语音和近似搜索

当我阅读Lucene.net文档时,我找到的唯一分析器是标准分析器。 我想确保我可以对我的索引进行语音或近似搜索。 我应该在Lucene.net上使用一些额外的库吗?

适用于所有匹配的Boyer-Moore-Horspool算法(在字节数组中查找字节数组)

这是我对BMH算法的实现(它就像一个魅力): public static Int64 IndexOf(this Byte[] value, Byte[] pattern) { if (value == null) throw new ArgumentNullException(“value”); if (pattern == null) throw new ArgumentNullException(“pattern”); Int64 valueLength = value.LongLength; Int64 patternLength = pattern.LongLength; if ((valueLength == 0) || (patternLength == 0) || (patternLength > valueLength)) return -1; Int64[] badCharacters = new Int64[256]; for (Int64 i = […]

如何使用Lucene.Net执行“包含”搜索而不是“以’开头”

我们使用Lucene.NET在客户网站上实现全文搜索。 搜索本身已经有效但我们现在想要实现修改。 目前所有术语都附加了一个* ,这导致Lucene执行我将其归类为StartsWith搜索的内容。 在未来,我们希望有一个搜索执行像Contains而不是StartsWith 。 我们用 Lucene.Net 2.9.2.2 StandardAnalyzer 默认的QueryParser 样品: (Title:Orch*)匹配: Orchestra 但: (Title:rch*)不符合: Orchestra 我们希望第一个和第二个都能与Orchestra匹配。 基本上我想要与此问题中提到的完全相反,我不确定为什么这个人Lucene默认执行Contains而不是StartsWith : 为什么这个Lucene查询是“包含”而不是“startsWith”? 我们怎样才能实现这一目标? 我觉得它与分析仪有关,但我不确定。

在C#List中查找重复项索引的最优雅方法是什么

我有一个包含重复项的List ,我需要找到每个的索引。 除了循环遍历所有项目之外,最优雅,最有效的方法是什么。 我在.NET 4.0上,所以LINQ是一个选项。 我做了大量的搜索并连接找到任何东西。 样本数据: var data = new List{“fname”, “lname”, “home”, “home”, “company”}(); 我需要得到“家”的索引。