您好,我要在我的 .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/