C# 如何高效地解析数据

C# 如何高效地解析数据,c#,algorithm,C#,Algorithm,我想知道是否有人能帮我分析出关键字的数据 假设我正在寻找这个关键字:我的示例Yo(这是许多关键字之一) 我有这样的数据 MY EXAMPLE YO #108 my-example-yo #108 my-example #108 MY Example #108 这只是一些组合。这些句子前面可能有单词或数字,在任何情况下都可能有,可能后面没有任何东西,可能像上面的例子一样,后面有东西 我想到了几个主意 将我能想到的所有组合存储在我的数据库中,然后使用contains 这样做的缺点是我需要一个

我想知道是否有人能帮我分析出关键字的数据

假设我正在寻找这个关键字:
我的示例Yo
(这是许多关键字之一)

我有这样的数据

MY EXAMPLE YO #108
my-example-yo #108 
my-example #108 
MY Example #108 
这只是一些组合。这些句子前面可能有单词或数字,在任何情况下都可能有,可能后面没有任何东西,可能像上面的例子一样,后面有东西

我想到了几个主意

  • 将我能想到的所有组合存储在我的数据库中,然后使用contains
  • 这样做的缺点是我需要一个巨大的数据库表,其中包含了我需要查找的所有内容的组合。然后,我必须将数据加载到内存中(通过nhibernate并检查每个组合)。我试图根据关键字确定要使用的类别,他们可以上传数千行来检查

    即使我加载子集并查看它们,我仍然认为这会很慢

  • 删除所有特殊字符并用空格隔开,忽略大小写,然后尝试使用正则表达式来查看有多少关键字匹配
  • 不确定如果关键字有破折号之类的特殊字符该怎么办


    我知道我不会得到所有的组合,但我想尝试得到尽可能多的组合。

    你考虑过吗?我自己也没用过,但听说它是全文搜索的好工具。它也可以很好地进行关键字搜索。我相信。

    您正在解析的数据是如何存储的?它是存储在平面文件、数据库、C#app中的某些结构中还是其他什么东西中?我存储的数据来自一个csv文件,该文件稍后通过filehelper转换为数据表。然后,我检查是否缺少我期望的一列。然后,我试图找到一个可能的列,它可以获取这些信息(从我看到的文件中,这通常是一个描述字段),这就是我试图解析的内容。关键字将位于由nhibernate获取的mssql数据库中。@chobo2您可以使用“grep”实用程序进行此操作。@chobo2它是一个unix命令行实用程序。看见命令“grep-i'my.example.yo'filename”应该提供包含您正在查找的模式的所有行。我正在使用的.net将使用一个文件。我可以使用grep吗(我认为它更适合像linux这样的命令行),我将研究它。我想知道它似乎使用了索引。包含关键字的表可能是guid,varchar()索引对此有帮助吗?我不太使用索引,所以对它们了解不多。