Tag: 搜索

Lucene – 搜索数值字段

好吧,我在过去的两个小时里搜索过这个结果只给出了提示,甚至没有一个完整的代码来帮助救援(如果他们看不到一些样品,小便会怎么学?) 我创建了一个像这样的索引: Directory directory = FSDirectory.Open(new System.IO.DirectoryInfo(Server.MapPath(“/data/channels/”))); Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_29); IndexWriter writer = new IndexWriter(directory, analyzer, true, Lucene.Net.Index.IndexWriter.MaxFieldLength.UNLIMITED); Document doc = new Document(); doc.Add(new Field(“ID”, “0”, Field.Store.YES, Field.Index.NO)); doc.Add(new Field(“parentID”, “0”, Field.Store.YES, Field.Index.NO)); doc.Add(new Field(“Title”, “Root”, Field.Store.YES, Field.Index.ANALYZED)); writer.AddDocument(doc); writer.Optimize(); writer.Close(); 现在,我想搜索字段ID其中值等于0 (以获得我在那里的单个记录)…. 但是,这样的简单搜索: Directory directory = FSDirectory.Open(new System.IO.DirectoryInfo(Server.MapPath(“/data/channels”))); Analyzer analyzer = new […]

为什么C#Array.BinarySearch如此之快?

我在C#中实现了一个非常简单的 binarySearch实现,用于在整数数组中查找整数: 二进制搜索 static int binarySearch(int[] arr, int i) { int low = 0, high = arr.Length – 1, mid; while (low <= high) { mid = (low + high) / 2; if (i arr[mid]) low = mid + 1; else return mid; } return -1; } 将它与C#的原生Array.BinarySearch()进行比较时,我发现Array.BinarySearch() 速度是我的函数的两倍多 。 Array.BinarySearch上的 MSDN: 使用由Array的每个元素和指定对象实现的IComparable通用接口,搜索特定元素的整个一维排序数组。 是什么让这种方法如此之快? 测试代码 […]

使用LINQ查找数组中的最小和最大日期?

我有一个带有属性Date的类数组,即: class Record { public DateTime Date { get; private set; } } void Summarize(Record[] arr) { foreach (var r in arr) { // do stuff } } 我必须在这个数组中找到earliest (最小的)和latest (最大的)日期。 我怎么能用LINQ做到这一点?

交叉索引引用

对不起,如果标题令人困惑,我不确定我应该如何标记这个,我试过了。 我正在编写一个程序来进行一些交叉索引搜索,该程序是使用Visual Studio 2010用C#编写的。 我有一个包含3列的表: Category , Type和Item 。 该表从excel电子表格中读入并存储在某种数据结构中(稍后将对此进行说明)。 以下是该表的简短示例。 | CATEGORY | TYPE | ITEM | <<header row | categoryA | typeA | itemA | <<first entry | categoryA | typeB | N/A | | categoryA | typeC | itemB | | categoryA | typeD | N/A | 我将读取两个用户输入字符串,我希望程序确定它们是否匹配。 [假设用户输入没有拼写错误,我写了一个函数来处理这个并规范化两个字符串] 确定两个字符串是否匹配的逻辑如下: 1)如果字符串是CATEGORY ,则具有相同CATEGORY每个TYPE和ITEM都是匹配的。 […]

如何在调试时在内存中搜索字符串?

我试图在我正在使用visual studio 2010调试的程序的内存中搜索一个字符串。我正在尝试使用立即窗口来执行此操作,但每当我尝试时(.S -A 0x400000 0x400200“MyString”)它给出我错误“CXX0014:错误:缺少操作数”,我不知道它为什么或如何解决它。 任何帮助将不胜感激。

获取名称以特定字符串开头的所有控件

对于学校项目,我们正在创建一个儿童可以学习的C#应用​​程序。 我在windows窗体中创建了一个模板,并希望通过选择子项来更改占位符,因此它可以成为1x选择,2x选择等。 我给每个标签命名的名称以tafel_noemer_ – tafel_noemer_1 , tafel_noemer_2等。 现在我想选择标签10之前的所有标签并更改占位符文本。 我试过this.Name.StartsWith(“tafel_noemer_”)但是无法让它与foreach一起工作。 有没有更好的方法来实现这一目标?

使用LINQ搜索关键字

如果我有一个包含标题的文本字段,并且我有一个关键字列表,我如何在标题中搜索(n)个关键字的标题? 因此,如果我的标题是“烤鸡肉,培根和韭菜馅饼”,并且用户搜索“鸡肉培根萝卜”,我想返回上述食谱。 基本上我想说,如果标题包含2个或更多的搜索词,那么它被认为是有效的,应该返回。 但如果它只包含1则忽略它。 理想情况下,我喜欢他们加权,以便更多的条款出现在列表中更高,但可能是版本2. 🙂 编辑 在这一点上我应该提一下,我希望这是原生的.net和c#。

C#的string.IndexOf如何执行得如此之快,比普通的循环查找速度快10倍?

我有一个非常长的字符串(大小为60MB ),我需要在其中找到有多对“”。 我首先尝试了自己的方式: char pre = ‘!’; int match1 = 0; for (int j = 0; j < html.Length; j++) { char c = html[j]; if (pre == '’) //find a match { pre = ‘!’; match1++; } else if (pre == ‘!’ && c == ‘<') pre = '<'; } 上面的代码在我的字符串上运行大约1000毫秒 。 然后我尝试使用string.IndexOf int […]

二进制搜索SortedList的键

我需要为线性插值编写一些代码,并且我试图找出最有效的方法来搜索SortedList的键,用于围绕我的目标键的上下键。 SortedList xyTable = new SortedList() { {1, 10}, {2, 20}, {3, 30}, {4,40} }; double targetX = 3.5; 搜索列表并确定3.5介于3和4之间的最有效方法是什么? 我有一个适用于整数的方法/作弊(暂时将目标键插入列表然后找到索引)但我想我会问专业人员所以我可以生成高质量的代码。 谢谢。

C使用正则表达式搜索Sharp文件夹

从顶级目录获取与某个正则表达式匹配的文件夹列表的最有效方法是什么? 我目前只是递归迭代子文件夹以查看它们是否与正则表达式匹配,如果它们匹配,我将使用目录路径获取文件名。 目前,由于此目录中的文件夹数量,此搜索大约需要50分钟才能使用当前方法。 private void ProcessFiles(string path, string searchPattern) { string pattern = @”^(\\\\server\\folder1\\subfolder\\(MENS|WOMENS|MENS\sDROPBOX|WOMENS\sDROPBOX)\\((((COLOR\sCHIPS)|(ALL\sMENS\sCOLORS)))|((\d{4})\\(\w+)\\(FINAL\sART|FINAL\sARTWORK)\\(\d{3}))))$”; DirectoryInfo di = new DirectoryInfo(path); try { Debug.WriteLine(“I’m in ” + di.FullName); if (di.Exists) { DirectoryInfo[] dirs = di.GetDirectories(“*”, SearchOption.TopDirectoryOnly); foreach (DirectoryInfo d in dirs) { string[] splitPath = d.FullName.Split(‘\\’); var dirMatch = new Regex(pattern, RegexOptions.IgnoreCase); if (dirMatch.IsMatch(d.FullName)) { Debug.WriteLine(“—Processing Directory: […]