我有一个名为TextFile
的类,其中有一个Title
和Body
都是字符串。
在我的应用程序中,我希望最终用户能够对这些文件执行搜索。
我想创建一种算法,首先对标题中带有搜索词的文件进行排序,然后对正文中带有搜索词的文件进行排序。
示例搜索词:“ 农民”
文件1:
标题:“欧洲农民”
身体:包含“农夫” 50次
文件2:
标题:“菜地”
身体:包含“农民”十次
文件3:
标题:“世界上的农民”
身体:包含“农民”十次
结果将是(按金额降序排列):
我的问题:当文件中标题中的搜索字词具有确切的使用时间(请参见文件1和文件3)时,如何开始排序?
我该如何首先按标题排序,然后按正文中出现的次数排序?
答案 0 :(得分:1)
只需编写类似int performSearch(string searchFor, TextFile file)
的方法即可。
在方法内部,您可以在字段中搜索。
要计算匹配次数,请使用RegEx
或在这里查看:https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/linq/how-to-count-occurrences-of-a-word-in-a-string-linq
只需将计数加在一起然后返回即可。您还可以定义一些权重。
例如:return (10 * countTitle) + (countBody);
现在,您可以通过以下方式对其进行排序:textFileList.OrderBy(file => performSearch(searchValue, file))
,您将获得文件的有序列表。