Lucene 如何过滤/排序Solr中属于多个类别的已排序文档而不进行分组?

Lucene 如何过滤/排序Solr中属于多个类别的已排序文档而不进行分组?,lucene,solr,indexing,schema,Lucene,Solr,Indexing,Schema,我正在寻找一些帮助和智慧,来帮助我正确地设计索引文档的模式。基本上,我的产品可以分为多个类别。在这些类别中,这些产品可能被排序,也可能不被排序。理想情况下,我希望每个产品只保留一个唯一的文档 我正在使用Solr 3.4.0,目前有以下结构的文档: { productId : "1", sku : "ABC123", productName : "My Product", categorySequence : ["123-1", "456-7", "789-nose

我正在寻找一些帮助和智慧,来帮助我正确地设计索引文档的模式。基本上,我的产品可以分为多个类别。在这些类别中,这些产品可能被排序,也可能不被排序。理想情况下,我希望每个产品只保留一个唯一的文档

我正在使用Solr 3.4.0,目前有以下结构的文档:

{
    productId : "1",
    sku : "ABC123",
    productName : "My Product",
    categorySequence : ["123-1", "456-7", "789-noseq", "000-noseq"],
    description : "Product description",
    rating: "4.36"
}
分类顺序是我遇到麻烦的地方。这是一个多值字段,其中包含使用类别id和该类别id内我的产品序列(用破折号分隔)格式化的字符串。如果产品未按类别排序,我会随意添加“noseq”

由于我的产品可以存在于多个类别中,因此我对categorySequence字段执行如下筛选查询:

fq=categorySequence:123-*
这对我来说是一种工作,只带回id为“123”的类别中的产品

然而,我现在发现的问题是,不能对多值字段进行排序。我最初希望这是一种按照适当顺序对过滤后的产品进行排序的快速方法

我在这里看到了一些关于为同一产品分组和创建多个文档的其他建议。然而,我的产品可以存在于许多类别中,正如您所想象的那样,我可以创建许多文档


我希望能坚持使用代表单一产品的单一文档。有人能帮我指出正确的方向吗?我想我基本上是在二维字段上进行筛选和排序?

面临类似的问题,下面是我们实现的-

  • 为涉及产品id和排序顺序的每个产品创建动态字段
  • 场-

    <dynamicField name="*_sort_seq"  type="string"  indexed="true"  stored="false"  sortMissingLast="true"/> 
    
  • 不需要存储没有任何排序顺序的。可以使用sortMissingLast和sortMissingFirst属性处理这些属性的位置

  • 这些字段将维护类别产品的位置/顺序

  • 如您所知,您可以轻松地对产品进行筛选和排序

    fq=categorySequence:123-*&sort=123\u sort\u seq asc

  • 不需要维护产品的多个副本


  • 这绝对是更简洁的方式,感谢您的这种方式!
    123_sort_seq=1
    456_sort_seq=7