我有一个文档,其中包含一个名为 uuid 的字段。该字段是一个列表(多值),每个文档最多可以包含 100k 个值。
例如,我想搜索匹配以“5ff6115e”开头的 uuid 的文档。我已经可以通过使用 q=uuids:5ff6115e*
成功地做到这一点:
http://localhost:8983/solr/test1/select?q=uuids%3A5ff6115e *&rows=1&fl=uuids&wt=json&indent=true
但是,生成的文档为我带来了该字段的所有 100k 值。
我想要的不仅是过滤 uuids 字段以这个值开头的文档,还要过滤返回的字段值,这样我只会在答案中收到特定的值。
怎么做?
最佳答案
使用突出显示。 @Jokin 首先提到它,我觉得这是最好的答案,无需破解 Solr。尝试使用 PostingsHighlighter 或 FastVectorHighlighter,而不是默认/标准荧光笔。不幸的是,他们都在内部对该字段中的所有 UIDS 执行通配符查询。 FVH 有机会在内部对此进行更明智的处理,但并未以这种方式实现。
注意:如果在范围内编写一些 Java 以添加到 Solr,理想的答案是添加术语向量(只是术语向量中的术语数据,没有偏移量/位置),然后编写一个“DocTransformer "获取词向量词;寻找前缀,然后迭代具有该前缀的那些。相当快。
关于solr - 如何过滤 Solr 中多值字段返回的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29535197/