搜索平坦的多值字段

时间:2015-08-28 11:40:23

标签: search solr multivalue

假设我有一个名为myfield的多值字段和一些包含myfield中某些值的文档。

现在我开始这样的查询:

myfield:foobar

结果将是这样的:

<doc>
  <arr name="myfield">
    <str>foobar_1</str>
    <str>foobar_2</str>
  </arr>
</doc>
<doc>
  <arr name="myfield">
    <str>foobar_3</str>
    <str>foobar_4</str>
  </arr>
</doc>

但我不希望结果被文件分开。我希望它平坦,像这样:

<arr name="myfield">
  <str>foobar_1</str>
  <str>foobar_2</str>
  <str>foobar_3</str>
  <str>foobar_4</str>
</arr>

这有可能吗?对我来说有什么好的暗示吗?

让我们试着解释我想要做的事情:

我的solr索引的每个文档都有一个符号列表(存储在多值字段中)。现在我想搜索并浏览这些符号。

我需要对结果进行特殊评分,所以我要写自己的QParserPlugin

2 个答案:

答案 0 :(得分:2)

如果您只想要字段中的所有术语 - 请使用构面或术语组件。既然你显然对文件本身并不感兴趣,那么可能就是你想要的一个方面。

答案 1 :(得分:1)

我认为这不可能来自solr。 Solr将始终返回一个文档,就像它是如何构建的一样。在schema.xml中定义文档时。

如果要删除文档并获得简单的结果,则必须在java端添加一些逻辑以删除文档并仅获取字段。