按标题然后按正文排序文本文件

时间:2018-08-13 14:52:25

标签: c# algorithm partial-ordering

我有一个名为TextFile的类,其中有一个TitleBody都是字符串。

在我的应用程序中,我希望最终用户能够对这些文件执行搜索。

我想创建一种算法,首先对标题中带有搜索词的文件进行排序,然后对正文中带有搜索词的文件进行排序。

示例搜索词:“ 农民

文件1:

标题:“欧洲农民”

身体:包含“农夫” 50次

文件2:

标题:“菜地”

身体:包含“农民”十次

文件3:

标题:“世界上的农民”

身体:包含“农民”十次

结果将是(按金额降序排列):

  1. 文件1
  2. 文件3
  3. 文件2

我的问题:当文件中标题中的搜索字词具有确切的使用时间(请参见文件1和文件3)时,如何开始排序?

我该如何首先按标题排序,然后按正文中出现的次数排序?

1 个答案:

答案 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)),您将获得文件的有序列表。