Java 对具有两种不同文档类型的索引进行查询搜索

Java 对具有两种不同文档类型的索引进行查询搜索,java,lucene,Java,Lucene,我有一个索引,其中包含异构文档。这些文档只有一个公共字段(个人id),例如: 医生 身份证号码:7 内容:此示例内容文档有一个长文本 类型:内容 医生 身份证号码:7 标题:示例文档 公众:是的 类型:元数据 我之所以选择此解决方案,是因为我希望将长文本文档与元数据文档分开管理 如果我执行这样的查询 +(content: example title: example) +public: yes lucene正确返回id为7的文档类型“metadata”,但如果我执行另一个: +(content

我有一个索引,其中包含异构文档。这些文档只有一个公共字段(个人id),例如:

医生 身份证号码:7 内容:此示例内容文档有一个长文本 类型:内容

医生 身份证号码:7 标题:示例文档 公众:是的 类型:元数据

我之所以选择此解决方案,是因为我希望将长文本文档与元数据文档分开管理

如果我执行这样的查询

+(content: example title: example) +public: yes
lucene正确返回id为7的文档类型“metadata”,但如果我执行另一个:

+(content: long) +public: yes
lucene没有将文档返回给我,因为子句+public:yes(对于我的应用程序是必需的)对应的字段不在“content”类型的文档中

我的问题:我如何让lucene将包含“public”字段“yes”的“content”文档返回到另一个具有相同id的文档中(只有一个查询)


对不起,我的英语太差了,谢谢大家。

如果您没有将“public”字段设为必填字段,它会工作吗。因此:

+(content: long) public: yes

或者,在将“public”字段提交给Lucene之前,是否可以将其从查询字符串中去掉?

元数据“public”是必需的。。。我不能将具有相应元数据“public”的文档类型“content”返回为false。是的,我可以从查询中删除公共条件,但是,如果我这样做,lucene会返回“content”文档,其中包含相关元数据“true”和“false”。好的,我明白了。听起来你想做一个连接查询。不过,我认为使用默认的Lucene查询解析器无法做到这一点。如果不太复杂,您可以编写一些东西来专门使用查询API来处理您的案例。或者,看起来Solr支持join查询:,尽管我没有使用它们。不幸的是,现在我已经统一了这两个文档,因为这个问题让我成了一个疯狂的程序员!