Lucene:查找与查询匹配的文档以及与匹配文档共享字段值的文档

时间:2016-04-10 19:45:17

标签: java lucene

我目前正在玩lucene以了解它是否适​​合用例的要求,可以概述如下:

  • 相对较高频率(4百万/天)的无序传入消息作为文档到达时存储在lucene中
  • 消息与特定字段值链接在一起(链接)
  • 查询消息时,应返回整个链

到达消息的示例:

格式:({<fieldName_1>:<fieldValue_1>; <fieldnName_n>:<fieldnValue_N>; ...}

1: {chain:1; attr1:a; attr2:b; ...}
2: {chain:2; attr1:c; attr2:d; ...}
3: {chain:1; attr3:e; attr4:f; ...}
4: {chain:2; attr3:g; attr4:h; ...}
...

所以在上面的例子中,我们有4条属于两个链的消息。

基于该示例的问题是:

能够执行以下查询的最佳(绩效明智)策略是什么:

  • attr1==a AND attr2==b并返回消息1和3或查询
  • attr1==a OR attr2==d并返回所有4条消息

将消息添加到lucene时,我可以做这样的事情吗?

到目前为止我尝试了什么:

  • 我尝试在单个文档中合并消息属性:查询传入消息链的索引,创建一个新消息,其中包含查询结果和新消息的合并属性,添加合并消息作为新文档,最后删除原始文档。通过这种方式,查询将非常简单,因为整个链条都在一个文档中,但不幸的是,这可能是写作的性能噩梦。

祝你好运

0 个答案:

没有答案