gpt4 book ai didi

c# - 小型集合的智能字符串搜索

转载 作者:行者123 更新时间:2023-11-30 16:57:13 27 4
gpt4 key购买 nike

我在内存中有一个非常小的字符串值集合(大约 8400 条记录,每条平均 10 个单词):

我试图找出是否有一个库或其他东西,当我在该集合中搜索字符串时,它会根据它返回匹配值,并且它还可能包含某种权重的结果。

这就是我想要做的;假设我在内存列表中有这些记录:

  • 百货公司总经理
  • 总经理兼运营经理
  • 总经理
  • 餐厅总经理
  • 餐厅总经理

假设我正在研究一种接收搜索字符串的方法,它将分析该集合以检索结果:

List<string> SearchJotitles("General Manager")

我想要一些东西来返回所有包含单词 General AND Manager 的记录。到目前为止应该很简单:我可以用正则表达式来完成。

但棘手的部分是我想应用一些称重规则说:

“好的:第三条记录是一个更大的匹配,因为它是一个完全匹配。” “第一个和最后一个记录应该是下一个,因为它们有两个词,它们之间没有距离”。 “第二条记录应该是下一条,因为它有两个完全相同的词,但顺序不同” “第四条记录应该是最后一条,因为它有两个词的部分匹配”

这就是我想要应用的逻辑。

我知道有一些库,例如 Lucene.NETSphinx:我不会丢弃它们;我只是不相信它们是否值得用于这么小的内存集合。

在最坏的情况下,我将在实体的 IComparer 实现中工作,但我想知道是否有我可以在那里使用的东西。

感谢和问候,

最佳答案

在这个特定的示例中,记录量很小,但它仍然不会降低全文搜索的复杂性。

如果您只有 5 条记录,那么实现简单的 Levenshtein distance 可能是个好主意(或在线查找实现),标记所有短语并执行您的自定义匹配算法(单词距离,可能是同义词等)。

另一方面,使用 Lucene.NET 可以让您开箱即用。您可以使用 RAMDirectory 将索引存储在内存中。最重要的是,您不必花费数小时来弄清楚为什么您的自定义算法无法正常工作。为什么要重新发明轮子?

替代方案?您在应用程序中使用任何 sql 数据库吗?也许值得利用现代 SQL 数据库中内置的全文搜索,当然,如果您使用的话。

关于c# - 小型集合的智能字符串搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26852957/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com