如何在lucene搜索中包含其他字段?

如何在lucene搜索中包含其他字段?,lucene,Lucene,让我们以电子邮件为例作为文档。你有你的主题,身体,来自的人,我们也可以给他们贴标签(就像gmail那样) 根据我对QueryParser的理解,我给它一个字段和解析器类型。如果用户输入文本,则用户只搜索我设置的内容。我注意到,如果我写了fieldName:text来搜索,它会在subject或body字段中查找,但是如何使用subject中的一些字符串,以及body中的其他字符串进行常规查询,例如“有趣的问题独角兽”查找结果?ATM因为我知道这很容易,所以我创建了一个名为ALL的字段,并将所有其

让我们以电子邮件为例作为文档。你有你的主题,身体,来自的人,我们也可以给他们贴标签(就像gmail那样)

根据我对QueryParser的理解,我给它一个字段和解析器类型。如果用户输入文本,则用户只搜索我设置的内容。我注意到,如果我写了
fieldName:text来搜索
,它会在subject或body字段中查找,但是如何使用subject中的一些字符串,以及body中的其他字符串进行常规查询,例如“有趣的问题独角兽”查找结果?ATM因为我知道这很容易,所以我创建了一个名为ALL的字段,并将所有其他字段合并到该字段中,但我想知道如何以正确的方式完成它。尤其是因为我的下一个应用程序依赖于文本搜索

使用。您可以使用以下构造函数指定要搜索的字段列表

MultiFieldQueryParser(Version matchVersion, String[] fields, Analyzer analyzer)
这将生成一个查询,就像您在不同字段上创建了多个查询一样。这部分解决了您的问题。这仍然不会匹配字段1中的一项匹配和字段2中的另一项匹配。为此,正如您正确指出的,您需要将所有字段合并到一个字段中,并在该字段中搜索。然而,当查询项不跨越字段边界时,您会发现MultiFieldQueryParser很有用