我已将一组json对象存储到lucene索引中,并且还希望从索引中检索它。我正在使用lucene-3.4。
所以有没有任何库或简单的机制可以在lucene中实现这一点。
对于示例:Json对象
{
BOOKNAME1: {
id:1,
name:"bname1",
price:"p1"
},
BOOKNAME2: {
id:2,
name:"bname2",
price:"p2"
},
BOOKNAME3: {
id:3,
name:"bname3",
price:"p3"
}
}
任何形式的帮助将不胜感激。 提前谢谢,
答案 0 :(得分:9)
我建议你通过以下方式索引你的json对象:
1)解析你的json文件。我通常使用json simple。
2)使用IndexWriterConfig
打开索引3)将文档添加到索引中。
4)提交更改并关闭索引
5)运行查询
如果你想使用Lucene Core而不是elasticsearch,我创建了一个示例项目,它将一个带有JSON对象的文件作为输入,并创建一个Index。另外,我添加了一个测试来查询索引。
我正在使用最新的Lucene版本(4.8),请看一下:
http://ignaciosuay.com/getting-started-with-lucene-and-json-indexing/
如果你有时间,我认为值得阅读“Lucene in Action”。
希望它有所帮助。
答案 1 :(得分:4)
如果你不想在json中搜索但只存储它,你只需要提取id,这有望是唯一的。然后你的lucene文档将有两个字段:
将json存储在lucene中后,您可以通过id检索过滤。
另一方面,这几乎是elasticsearch对您的文档所做的事情。你只需通过REST api向它发送一些json。 elasticsearch将保持json不变,并且默认情况下也可以搜索它。这意味着你可以通过id检索json或者搜索它,开箱即用而无需编写任何代码。
此外,使用lucene,在提交文档或重新打开索引阅读器之前,您的文档将无法使用,而elasticsearch会为其添加便捷的事务日志,因此GET始终是实时的。
此外,elasticsearch提供了更多:良好的分布式基础架构,分面,脚本等。看看吧!