我正在使用休眠搜索4.4.0。我最近遇到了一个问题。
例如,我有2个类INDEXING和DATA_PROPERTY。其中2个之间没有关联。而且我无法更改它们或创建新的类来关联其中2个。
Lucene索引的一部分:
mapping.entity(DatatypeProperty.class).indexed().providedId()
.property("rdfResource",ElementType.FIELD).field().analyze(Analyze.NO).store(Store.YES)
.property("partitionValue", ElementType.FIELD).field().analyze(Analyze.NO)
mapping.entity(Indexing.class).indexed().providedId()
.property("rdfResource",ElementType.FIELD).field().analyze(Analyze.NO).store(Store.YES)
现在在SQL中,我使用
SELECT IND.RDF_RESOURCE
FROM INDEXING IND, DATA_PROPERTY DP
WHERE IND.RDF_RESOURCE = DP.RDF_RESOURCE
AND IND.OBJECT_TYPE_ID_INDEXED IN (........)
AND DP.PARTITION_VALUE IN (......)
AND .......
如何在休眠搜索中翻译IND.RDF_RESOURCE = DP.RDF_RESOURCE???
我以为我可以使用查询找到DatatypeProperty类的所有RDF_RESOURCE,并在查询中为类Indexing匹配所有的RDF_RESOURCE。但这似乎效率很低。
有谁对此有更好的方法?
我有2个类INDEXING和DATA_PROPERTY。其中2个之间没有关联。而且我无法更改它们或创建新类来关联其中2个。
在这种情况下,您将身处困境。您将需要以某种方式关联记录,最明显的选择是通过关联。同样,您不能将SQL连接与Lucene提供的基于自由文本的索引进行比较。
一种可能的解决方案是编写一个自定义网桥,该网桥在索引编制时执行联接并为相关数据建立索引,以便您可以通过查询直接将其作为目标。这是否适合您将取决于您的用例。在您的示例设置中,我看不到任何可从自由文本搜索中受益的字段。我只能假设您只显示部分代码。如果不是,为什么不坚持使用SQL?
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句