【发布时间】:2015-01-07 07:08:09
【问题描述】:
我在内存中有一个非常小的字符串值集合(大约 8400 条记录,平均每条记录 10 个单词):
我试图找出是否有库或其他东西,当我在该集合中搜索字符串时,它会根据它返回匹配值,并且它还可能包括某种对结果的权重。
这就是我想要做的;假设我在内存中的 List 中有这些记录:
- 百货总经理
- 总经理兼运营经理
- 总经理
- 餐厅一般经理
- 餐厅总经理
假设我正在研究一种接收搜索字符串的方法,它将分析该集合以检索结果:
List<string> SearchJotitles("General Manager")
我想要返回包含单词 General AND Manager 的所有记录的东西。到目前为止应该很容易:我可以使用正则表达式来完成。
但棘手的部分是我想应用一些称重规则:
“好的:第三条记录是一个更大的匹配,因为它是一个精确匹配。” “第一个和最后一个记录应该是下一个,因为它们有两个单词,它们之间没有距离”。 “第二条记录应该是下一个,因为它有两个完全相同的单词,但顺序不同” “第四条记录应该是最后一个,因为它有两个单词的部分匹配”
这就是我想要应用的逻辑。
我知道有一些库,例如 Lucene.NET 或 Sphinx:我不会丢弃它们;我只是不相信它们是否值得用于如此小的内存集合。
在最坏的情况下,我将在实体的 IComparer 实现中工作,但我想知道是否有一些我已经可以使用的东西。
感谢和问候,
【问题讨论】:
标签: c# string-matching string-search