Apache Solr只返回在中找到值/查询字符串的字段



我刚刚开始使用Apache Solr。

我已经成功地运行了Apache教程,现在已经创建了自己的集合并为我的文件编制了索引。

虽然文档内容丰富,但我找不到是否有查询所有字段的方法,只能返回搜索字符串/查询所在的字段。

例如,如果我有一个文件:Filename: Weekly Report For Company X.pdf

关联/索引元数据:

"id":"S:\Weekly Reports\JAN\Weekly Report For Company X.PDF",
"date":["2017-11-02T19:14:07Z"],
"pdf_pdfversion":[1.6],
"company":["Microsoft"],
"access_permission_can_print_degraded":[true],
"subject":["weekly report; reports; weekly"],
"contenttypeid":["0x010100F29081EC69D67544A17D8172A093E42E"],
"dc_format":["application/pdf; version=1.6"],

如果我查询"周报",我只想返回'id''subject'字段,因为它们是唯一包含实际查询值的字段。如果其他字段包含该字符串,我希望它们也返回。

我倾向于"它不可能完成"(但希望我错了),因为我把它比作SQL查询。它必须知道在SQL语句中返回哪些字段,并且不会基于没有匹配的字符串删除字段。

由于在运行查询之前我不知道匹配的字段,因此在执行查询时无法使用filter list选项。

这可能吗?

虽然这可能不是你想要的,但你可以通过高亮显示来模仿类似的行为。

您所需要做的就是创建dismax查询,其中qf是您拥有的所有字段(例如qf=id,subject,company)

然后,您需要请求高亮显示,请求它的所有字段(hl.fl=id,subject,company),并且启用hl.requireFieldMatch,这将迫使Solr只返回与查询匹配的字段。

在这种情况下,您将有一个突出显示部分,其中将包含匹配文档的ID,并且仅突出显示匹配字段的内容

最新更新