c# - 如何创建对象的内部搜索引擎

标签 c# list search object razor

您好,我要在我的 .cshtml 网站上创建一个内部搜索引擎。

引擎将搜索对象列表。并将根据搜索条件返回一个列表。

返回的列表按照搜索词在对象中出现的次数以及是否在对象的标题中进行排序。

该对象有一个将被搜索的标题内容。两者都是字符串。

我的问题是如何以最有效的方式解决这个问题,因为我正在考虑很多循环和临时列表。但这需要大量的响应时间。使用二分查找会更好吗?如何? 或者,如果已经有一个应用程序可以做到这一点,那么我就可以自己设计输出。

PS:如果有帮助的话,所有对象都来自数据库。

最佳答案

我不习惯 razor 或 ASP.net,但在带有对象列表的 C# 中,可以根据您的搜索模式为每个对象赋予权重,并按权重对列表进行排序:

 var searchPattern = "word1|word2";
 var regex = new Regex(searchPattern);
 var search = list.Select( o => 
                        new { Weight = regex.Matches(o.Header).Count * 20 
                                     + regex.Matches(o.Content).Count * 10, 
                              Value = o})
                  .OrderByDescending(o => o.Weight);

如果数据库中有对象,可以将其重写为sql查询,似乎sql server LIKE支持正则表达式。

关于c# - 如何创建对象的内部搜索引擎,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19005955/

相关文章:

c# - Visual Studio的Windows Style中的图标的图标路径在哪里

c# - 从列表的子集中高效地进行选择

eclipse - 向 Eclipse RCP 程序添加搜索的教程

c# - 如何在 Windows 窗体 C# 中伪造鼠标光标位置?

c# - 在 Ninject 中创建多个内核实例是一种不好的做法吗?

c# - 具有多个可选一对一关系的 Entity Framework 表

python - 固定长度记录

string - 如何将字符串列表拆分为 R 中的奇数和偶数元素

c# - 将自定义类添加到列表时遇到问题 (C#)

wordpress 在搜索页面上按帖子类型分组