使用.NET进行内存文本搜索

3
我在内存中有几兆字节的文本,存在一个二维数组中,其中第一列是行号,第二列是文本本身。 我想找到一个现成的解决方案,可以传递这种数据结构(它是可塑的)和一个布尔搜索查询,最好带有通配符,并找出哪些行包含匹配项。 是否有任何API可以做到这一点? 我不想使用像Lucene这样的东西,因为我不想麻烦地建立索引。 我基本上想枚举字符串集合并返回那些与传入的查询有命中的字符串。

6
foreach 还是 LINQ + RegEx? - Ondrej Tucny
行号有什么用?如果您对列表进行排序并执行二分搜索,是否可以呢? - Simon Whitehead
2MB并不算太大……你可能不需要任何特殊的东西,除非你需要在紧密循环中查询它。 - Thomas Levesque
@AlexeiLevenkov 没有本质上的问题,但我想传递布尔表达式。 - Matt
@Matt Linq的Where接受一个布尔表达式。 - Magnus
显示剩余2条评论
2个回答

5
如果你只是加载数据、搜索一次,然后丢弃它,那么最好按照上面评论中建议的使用LINQ+RegEx路线。也就是说,你可以在第一次通过数据时进行搜索,而不是进行索引再搜索索引,就像搜索引擎所做的那样。
但是,如果你要加载数据一次,然后重复搜索它,那么最好使用搜索引擎。如果你仍然不想使用Lucene.Net,一个带有全文搜索的内存System.Data.Sqlite数据库也可以很好地工作。

0

-1 OP明确要求内存解决方案,可能是为客户端而设计的。 - sasfrog

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接