【发布时间】:2013-07-02 06:44:41
【问题描述】:
我有一个包含大约 40,000 条记录的数据库表,其中包含代码字段,例如 FLEFSU25B-25M EMG1090-5S
我需要能够非常快速地选择包含给定子字符串的所有代码。例如“109”匹配EMG1090-5S。
我目前的方法是将代码存储在 Lucene 中,并通过子字符串让 Lucene 过滤 - 例如 109 但是,如果我只存储代码,这不是很有效,因为 Lucene 必须搜索所有令牌。
为了克服这个问题,我正在考虑创建一个新的分析器,它将每个代码拆分为标记,如下所示:
EMG1090-5S
MG1090-5S
G1090-5S
1090-5S
...
然后要查找所有子字符串为 109 的代码,我可以在 109* 上进行搜索,这样效率更高(我理解 Lucene 按字母顺序存储标记,就像 SQL Server 索引一样)。
这有意义吗? 这样的分析仪是否已经存在?我正在使用 .Net/C#。
【问题讨论】: