-1

我有一个TextFile用 a命名的类TitleBody它们都是字符串。

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

我想创建我的算法,首先对标题中包含搜索词的文件进行排序,然后是正文中包含搜索词的文件。

示例搜索词:“农民

文件 1:

书名:《欧洲农民》

正文:包含 'Farmer' 50 次

文件 2:

作品名称:《菜地》

正文:包含 'Farmer' 10 次

文件 3:

书名:《世界农民》

正文:包含 'Farmer' 10 次

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

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

我的问题:当文件在标题中包含搜索词的确切次数时,我如何开始订购(参见文件 1 和文件 3)?

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

4

1 回答 1

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

于 2018-08-13T15:30:17.980 回答