2010-07-23 51 views
3

嗨,在我的文档中,我有数据作为党的价值和党的类型。单个文档可以具有多方值和派对类型。例如,第一份文件将具有Party价值作为Pramod和Party类型作为客户。同一份文件的缔约方价值与供应商的XYZ和缔约方类型相同。我需要以这样的方式设计模式,以便能够查询其中client = pramod的所有文档。我可以通过在solr schema中定义两个字段作为client.name和supplier.name来实现,但问题是未定义派对类型的值集合,并且未来可能会添加新值。多值字段的索尔架构

+2

你的问题真的很难理解。你能清除这个问题,并举一些例子吗? – 2010-07-23 12:04:02

回答

0

可以说我有3列文档ID党值和党类型的表。在这张桌子里我有3排。第一行文件ID:1当事人价值:Pramod派对类型:客户。第2行:文档ID:1参与方值:Raj参与方类型:供应商。第3行文件ID:2党值:Pramod派对类型:供应商。现在在这张表中,如果我使用SQL,我很容易找到所有具有Party Value作为Pramod和Party Type作为Client的文档。

我需要设计solr模式,以便我可以在Solr中执行相同的操作。如果我在solr模式中创建2个字段Party值和Party类型,他们都是多值的,并尝试查询+ Pramod + Supplier然后solr会返回我第一个文档,即使在第一个文档中,Pramod是客户端而不是供应商

+0

假设你的文档有党和类型作为两个多值字段,你的查询应该看起来像派对:[“pramod”] AND type:[“client”] – 2013-01-10 00:56:41

2

我认为你的模式很好,但你的查询不够具体。您的查询应该针对特定的字段。所以查询将如下所示:

+PartyValue:Pramod +PartyType:Supplier 

Solr query documentation有更多详细信息。

2

有,你可以在这里问两个可能的问题:

  1. 每个文档都有一个PartyValue和一个PartyType。在这种情况下,您应该使用Aaron的建议(PartyValue有一个字段,PartyType有一个字段)。
  2. 每个文档都有一个PartyValue-Type对的列表。在这种情况下,您可能需要一个字段,但是multiValued = true。您的查询就会像

    + combinedField:(普拉莫德供应商)

原因在单场有他们的是,你不想来查找文档,其中的任何类型为A,任意值为B;你想找到包含A/B类型/值对的那些。

+0

我认为Pramod提出问题2的确。它确实是一个很好的解决方案。 PartyValue如何与许多PartyTypes搭配? solr TemplateTransformer无法处理这个问题。 – Tommy 2010-11-25 09:30:12

+0

如果组合字段被命名为“party”,则“party:pramod”或“party:supplier”也可以工作。唯一的问题是,如果派对名称是“”供应商“”或“客户端”。 – Oliv 2012-08-15 11:21:00