1

我正在处理一个非常利基的需求,以在 Solr 中对关系结构进行建模,并认为自定义多域将是解决我的问题的最合适的解决方案。简而言之,索引中的每条记录都将有一些禁运日期和到期日期,以便将内容视为“可用”。这些日期与另一种分类(假设按设备)分组,因此,例如,索引中的任何给定项目可能在两个日期之间可供移动用户使用,但仅在另外两个日期之间可供桌面用户使用。

与货币和纬度类型非常相似,我会将值索引为逗号分隔的列表,表示每个可用性窗口,例如:

mobile,2013-09-23T00:00:00Z,2013-09-30T00:00:00Z 

因此,单个索引记录可能看起来像

{
    id: "1234",
    text: ["foobarbaz"],
    availability: [
        "mobile,2013-09-23T00:00:00Z,2013-09-30T00:00:00Z",
        "pc,2013-09-22T00:00:00Z,2013-09-30T00:00:00Z"
    ]
}

自定义类型将完成解析传入值并相应地存储它的工作。这是一个可行的解决方案吗?我将如何处理查询时所需的自定义逻辑以按设备过滤,然后确保 NOW 在提供的日期内?

到目前为止,我的尝试一直基于 Currency 字段类型,但现在我将其拨回为仅将字符串存储在未解析状态。如果我能在使用多域功能之前证明我想要的过滤是可能的,那么我就会知道它是否值得继续。

是否有其他人有任何编写自定义(多边形)字段的经验,或者做任何类似于我正在做的事情?

谢谢!

4

1 回答 1

0

如果您希望能够过滤和搜索这些范围,我认为您不会很幸运地存储这样的记录。拥有一个更有条理的文档对我来说更有意义,例如:

id: "1234",
text: ["foobarbaz"],
mobileavailabilitystart: "mobile,2013-09-23T00:00:00Z",
mobileavailabilityend: "2013-09-30T00:00:00Z",
pcavailabilitystart: "2013-09-22T00:00:00Z", 
pcavailabilityend: "2013-09-30T00:00:00Z"

在单个字段中索引 Lucene/Solr 中 csv 行的全部内容将允许您对其执行全文搜索,但不是支持查询其中特定元素的好方法。

于 2013-09-17T21:50:43.933 回答