7

我有一个关于在 solr 中创建嵌套字段的可能性的问题。谷歌搜索告诉我一些关于组的信息,但我认为它只是为了结果?

我想要的是这样的结构:

  • 类别1
    • 项目 1 (9)
    • 项目 2 (8)
  • 类别2
    • 第 3 (6) 项
  • 类别3
    • 项目 4 (23)

我试过这样的事情:

<field name="Category" type="string" indexed="true" stored="true" multiValued="true" required="false">
<field name="MiscellaneousName" type="string" indexed="true" stored="true" multiValued="true" required="false"/>

但它不起作用。

更新: 类别和项目应该分面。Everey item(=facet) 是一个类别的一部分。一个类别可以有多个或空字段。类别和项目存储在数据库中,我想动态索引它们。我只想搜索项目,类别只是文本。我将 solr 3.3 与 Tomcat 7 一起使用。

4

3 回答 3

6

感谢更新。Pivot facets允许您执行以下操作:

  • 第一类 (17)
    • 项目 1 (9)
    • 项目 2 (8)
  • 类别2 (6)
    • 第 3 (6) 项
  • 第三类 (23)
    • 项目 4 (23)

.. 但它们仅在 Solr 4.0 (trunk) 中可用。但是,您可以在较低的 Solr(低至 1.4)中模拟这些结果,尽管它有点复杂并且需要两个 Solr 查询而不是一个。我为此写了一篇博文——Pivot Faceting (Decision Trees) in Solr 1.4

您可以保留原始问题中的模式——数据透视(真实或模拟)适用于任意、不同(或相同)的字段。

于 2011-10-10T15:32:17.800 回答
1

枢轴分面是定义层次分面所需要的。
但是,您需要使用主干构建才能使其正常工作。

如果您在升级时遇到问题,可以检查选项@http ://www.lucidimagination.com/why-lucid/webinars/mastering-power-faceted-search

这是一种解决方法,需要您操作您提供的数据。

Cattegory1 -> item 1  
0//Cattegory1 and 1//Cattegory1//item1

它与
使用 fq=category:"0//Category1"
facet.prefix 过滤结果的组合一起使用,这将帮助您根据级别限制方面,如果您需要限制结果

http://wiki.apache.org/solr/HierarchicalFaceting也可能有用。

于 2011-10-10T14:10:48.913 回答
0

您能否使类别只是项目的一个字段,以便例如当您搜索类别 1 时,项目 1 和 2 会在结果中返回?

如果您有两个字段绝对必须是实体的一部分并且必须相互关联,那么多字段可能会有所帮助。它们是为具有 x 和 y 值的点而设计的。

我认为我们需要更多地了解您究竟想做什么,以提出在 Solr 中处理它的好方法。

于 2011-10-10T14:51:45.627 回答