【发布时间】:2017-03-28 09:39:05
【问题描述】:
我有一本大字典(大约 1000 万个单词和表达方式)。我想建立一个非常快速的系统,允许使用 * 和?面具。例如:
*est*:
对于est
估计估计
nest
k??g*:
k在g
kaggle
kingdom
我知道如果我手动编程,使用 trie 数据结构可以很容易地解决它。 Java 中的此类任务是否已准备好(或几乎准备好)?
【问题讨论】:
-
如果在数据库中,您可以将这些查询转换为
like '%est%'和like 'k??g%'。如果您在数据库中没有该数据,您可以查看内存数据库。或者,您可以查看基于 lucene 构建的各种搜索引擎(或直接使用 lucene)。 -
您可能想看看 Apache Lucene 及其模糊搜索功能。
-
没有使用 trie 数据结构,但是 Apache Lucene 是一个非常强大的索引和搜索框架
-
那么,您是在要求我们提供现成的代码吗?这与堆栈溢出无关。我们在这里回答有关编程问题的问题,而不是有关现有工具和库的问题。请参阅help center。
-
@DenisKulagin 我不这么认为。您要实现的目标并不是一项微不足道的任务。由于您正在寻找一些可用于生产的库,因此 Lucene 可能是您的最佳选择。
标签: java dictionary data-structures trie