我有一个包含代码字段的大约 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#。