我有一个包含两个主表的数据库:
..和它们之间的多对多关系(每个组件约100K组件),因此总共10G关系。
索引组件的最佳方法是什么,以便我可以查询给定程序集的索引?考虑到关系的数量,我不想将它们导入到Lucene索引中,但我正在寻找一种在运行中与我的外部表“连接”的方法。
答案 0 :(得分:1)
Solr支持多值字段。如果Lucene本能地支持他们,那么这不是正面的。对我来说已经有一段时间了。如果只有一个实体是可搜索的,你提到的是组件,我会用一个名为“assemblies”或“assemblyIds”的字段或类似的东西索引所有组件,并包含识别组件所需的任何元数据。
然后您可以使用
搜索组件assemblyIds:(1, 2, 3)
在程序集1,2或3中查找组件。
答案 1 :(得分:0)
简而言之,您必须先处理数据并将其编入索引才能进行搜索。因此,没有办法只是插入"插件" Lucene对某些数据或数据库,而不是你自己的数据插件(处理,解析,分析,索引和查询)到Lucene。
rustyx:"我的数据大多是静态的。我甚至可以使用只读索引。"
在这种情况下,你可以自己使用Lucene。您可以迭代数据源以将所有多对多关系添加到Lucene索引。你是怎么想出那个" 100GB"尺寸?人们使用Lucene索引数以百万计的文档,我不认为它是您索引的问题。
您可以在具有"程序集"的文档中使用不同的值("组件")向索引添加多个字段实例。领域也是如此。
rustx:"我正在寻找一种方式来加入" Lucene使用我的外部数据源进行搜索"
如果你需要无缝的东西,你可以试试下面的框架,它就像是关系数据库和Lucene Index之间的桥梁。
Hibernate Search:在该教程中,您可以搜索" @ ManyToMany"关键字,以找到教程中的确切部分,以获得一些想法。