将lucene查询序列化为JSON?

时间:2014-06-23 11:42:47

标签: json serialization lucene

将Lucene查询序列化为JSON格式是否有最佳做法?我看到了弹性搜索查询dsl,但看起来它偏离了lucene术语。此外,Lucene似乎正在不再维护序列化代码。

我希望有一个"标准" JSON中的格式。我需要能够保存查询,但是当用户在Web UI上保存查询时,他们不会输入title:Matrix。我们还必须能够搜索已保存的搜索,然后编辑已保存的搜索。如果有一个标准的json格式来表示查询,那就太好了。特别是lucene查询。

2 个答案:

答案 0 :(得分:1)

我对Elasticsearch知之甚少,但我猜他们正在这样做(也),因为他们支持除Lucene之外的额外查询功能。

如果您只需要对查询进行编组/取消编组,只需将其视为单个非转义字符串即可。如果你想把它分解为键值(字段名称/值)元素,不要忘记你可以有结合/分离/等。所以这不是微不足道的。

至于您对序列化代码的评论 - 不要认为这适用于查询。 Query具有抽象toString(String field)方法,每个查询子类应该实现该方法并提供可解析的字符串。 toString()只是调用 - 而且这种情况很长时间没有变化,我也没有看到这种情况发生变化,因为Query没有提供任何其他获取字符串表示的方式,因此更改它会破坏很多代码。

答案 1 :(得分:0)

您的标准查询将具有树状结构,因此我认为将其转换为Json应该是微不足道的。只需创建一个递归方法,调用自身进行布尔或dismax查询。其余的查询是(我认为)终端查询