【发布时间】:2013-10-01 02:32:58
【问题描述】:
您好,我将在我的 .cshtml 网站上创建一个内部搜索引擎。
引擎将搜索对象列表。并且将根据搜索条件返回一个列表。
返回的列表按照搜索词在对象中出现的次数以及是否在对象头部排序。
该对象有一个 header 和 content 将被搜索。两者都是字符串。
我的问题是如何以最有效的方式解决这个问题,因为我正在考虑很多循环和临时列表。但这需要很多响应时间。使用二进制搜索会更好吗?如何? 或者,如果已经有一个应用程序可以做到这一点,并且允许我自己设计输出。
PS:如果有帮助,所有对象都来自数据库。
【问题讨论】:
-
header和content是简单的字符串属性吗? -
如果担心性能,最好在数据库中完成。 SQL Server 有一个全文搜索组件,可以让事情变得更简单。
-
此外,二进制搜索将用于排序的数据 - 就像索引一样。我认为这不适用于这里。
-
您可以通过简单的
LIKEs 获取列表本身。排序可能有点困难。不知道使用(LEN(ColumnToCheck) - LEN(REPLACE(ColumnToCheck,"theSearchTerm","")))之类的东西在数据库端进行排序(你只希望它用于排序,如果你想要实际出现的次数,你需要除以LEN("theSearchTerm"))会比排序更快像Regex.Matches(ColumnToCheck, "theSearchTerm").Count这样的应用程序端。 -
是的。两个属性都是字符串
标签: c# list search object razor