我刚开始使用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语句中返回哪些字段,并且不能根据没有匹配的字符串删除字段。
由于在运行查询之前我不知道匹配的字段,因此我无法在执行查询时使用过滤器列表选项。
这可能吗?
答案 0 :(得分:3)
虽然这可能并不是您想要的,但是您可以通过突出显示来模仿类似的行为。
您需要做的-创建dismax query,其中qf
是您拥有的所有字段(例如qf=id,subject,company
)
然后,您需要请求highlighting,为其请求所有字段(hl.fl=id,subject,company
)并启用 hl.requireFieldMatch
,这将迫使Solr只返回符合查询条件。
在这种情况下,您将有一个突出显示部分,其中包含匹配文档的ID,并且仅包含匹配字段中突出显示的内容