Apache Solr仅返回在以下位置找到值/查询字符串的字段

时间:2019-02-07 12:13:47

标签: sql 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语句中返回哪些字段,并且不能根据没有匹配的字符串删除字段。

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

这可能吗?

1 个答案:

答案 0 :(得分:3)

虽然这可能并不是您想要的,但是您可以通过突出显示来模仿类似的行为。

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

然后,您需要请求highlighting,为其请求所有字段(hl.fl=id,subject,company)并启用 hl.requireFieldMatch,这将迫使Solr只返回符合查询条件。

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