SOLR中的嵌套字段

时间:2011-10-10 13:01:17

标签: solr faceted-search

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

我想拥有的是这样的结构:

  • 组别
    • 第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项目(= facet)是类别的一部分。一个类别可以有多个或空字段。类别和项目存储在数据库中,我想动态索引它们。我只想搜索项目,类别只是文本。我在Tomcat 7中使用solr 3.3。

3 个答案:

答案 0 :(得分:6)

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

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

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

您可以保留原始问题中的架构 - 数据分片(真实或模拟)适用于任意,不同(或相同)的字段。

答案 1 :(得分:1)

Pivot facets是您定义层次结构方面所需要的 但是,您需要使用trunk构建才能使其正常工作。

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

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

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

它与 - 的组合起作用 使用fq = category过滤结果:“0 // Cattegory1”
facet.prefix将帮助您根据级别限制构面,如果您需要限制结果

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

答案 2 :(得分:0)

您是否可以将该类别仅作为该项目的字段,以便例如当您搜索类别1时,项目1和2会回到结果中吗?

如果您有两个字段绝对必须是实体的一部分并且必须彼此关联,则多边形字段可能有所帮助。它们被设计用于具有x和y值的点。

我认为我们需要了解更多关于你想要做些什么来建议在Solr中处理它的好方法。