0

这可能吗?我不能直接访问数据库——只能通过数据对象。如果项目以 ArrayList 之类的形式返回,我是否能够搜索索引?

如果这不可能,有什么方法可以使用 Lucene(或其他工具)对使用 java 的对象进行模糊匹配?

例如,我有一个包含 FirstName 和 LastName 的 Person 对象。我想对名称进行模糊匹配。所以,假设我有一个 x 数量的 Person 对象数组,是否有一种有效的方法来遍历每个 Person 对象并比较名称?

4

2 回答 2

0

这些是我想出的可能的解决方案——但是,我不能将我的索引存储在 FSDirectory 上(项目规范不允许这样做),对于 RAMDirectory,我们需要搜索数千个 Person 对象,所以我不知道内存存储是否适合这种情况。

是否有任何其他类型的模糊匹配算法可以用于对大量数据有效?

于 2011-01-28T17:20:25.713 回答
0

获取这些数据对象并在它们之上构建一个单独的 Lucene 索引,存储您需要的字段。使用您的 Person 示例,每个 Lucene 文档都是 [Id, FirstName, LastName]。对该索引的搜索将返回查询数据库以获取完整数据对象所需的 ID。

实际的索引很容易,您只需要检索数据对象列表,迭代它们,生成 Lucene 文档,并使用 IndexWriter 存储它们。您可以针对持久存储的文件系统目录或内存存储进行操作。

于 2011-01-28T04:59:01.773 回答