我有一个文档,其中包含一个名为 uuid 的字段。该字段是一个列表(多值),每个文档最多可以有 100k 个值。
例如,我想搜索与以“5ff6115e”开头的 uuid 匹配的文档。我已经可以通过使用成功做到这一点q=uuids:5ff6115e*
:
http://localhost:8983/solr/test1/select?q=uuids%3A5ff6115e http://localhost:8983/solr/test1/select?q=uuids%3A5ff6115e*&rows=1&fl=uuids&wt=json&indent=true
然而,生成的文档为我提供了该字段的所有 100k 值。
我想要的不仅是过滤 uuid 字段以此值开头的文档,而且还过滤返回的字段值,以便我只会收到答案中的特定值。
怎么做?
使用突出显示。 @Jokin 首先提到了它,我觉得这是最好的答案,无需对 Solr 进行黑客攻击。尝试使用 PostingsHighlighter 或 FastVectorHighlighter,而不是默认/标准荧光笔。不幸的是,它们都在内部对该字段中的所有 UIDS 执行通配符查询。 FVH 具有机会内部对此更加聪明,但它并没有以这种方式实施。
注意:如果在编写一些 Java 添加到 Solr 的范围内,理想的答案是添加术语向量(只是术语向量中的术语数据,没有偏移量/位置),然后编写一个“DocTransformer”来抓取项向量项;查找前缀,然后迭代具有该前缀的那些。相当快。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)