用java中的数据对象在数据库中存储lucene索引

用java中的数据对象在数据库中存储lucene索引,lucene,match,fuzzy-search,Lucene,Match,Fuzzy Search,这可能吗?我不能直接访问数据库——只能通过数据对象。 如果项目以类似ArrayList的方式返回,我是否能够搜索索引 如果这是不可能的,是否有某种方法可以使用Lucene(或其他工具)使用java对对象进行模糊匹配 例如,我有一个Person对象,它有FirstName和LastName。我想对名字进行模糊匹配。 那么,假设我有一个x数量的Person对象数组,是否有一种有效的方法循环遍历每个Person对象并比较名称?获取这些数据对象并在其上构建一个单独的Lucene索引,存储您需要的字段。以

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

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

例如,我有一个Person对象,它有FirstName和LastName。我想对名字进行模糊匹配。
那么,假设我有一个x数量的Person对象数组,是否有一种有效的方法循环遍历每个Person对象并比较名称?

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


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

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


有没有其他类型的模糊匹配算法可以有效地处理大型数据集?

我相信这是对答案的评论。几千个文档对Lucene来说没有任何问题,一万个1KB的文档仍然只有10MB的内存。我不知道你们打算使用什么fzzu算法,但你们可能想研究一下BKTree结构,它可以和LevensInthein距离一起使用,以允许模糊匹配。