众所周知,wiki 中 Solrj 的文档非常少。我设法使用 CommonsHttpSolrServer 查询索引,但从未使用嵌入式版本。无论如何,现在我正在使用 EdgeNGrams 来显示自动建议,并且我的索引中有一个字段“count”,这样我就可以根据人们查询该元素的次数对结果进行排序。
我现在想做的是能够更新我的 Java 程序中的这个“计数”字段,我想这应该很容易吧?我从源代码中查看了测试文件,但它非常复杂,并且尝试做类似的事情对我来说总是失败。也许通过使用 Solrj?
感谢您的帮助。
编辑: 在我的 java 代码中,我有:
CoreContainer.Initializer initializer = new CoreContainer.Initializer();
CoreContainer coreContainer = initializer.initialize();
此时我希望得到的是 coreContainer 中存在的 solr.xml 中定义的核心,但那里没有核心(但 defaultCoreName 表示 collection1)。我的 solr.xml 文件与示例目录中的相同:
<solr persistent="false">
<cores adminPath="/admin/cores" defaultCoreName="collection1">
<core name="collection1" instanceDir="." />
</cores>
</solr>
最佳答案
修改自 this测试示例。要向 Solr 添加一个值然后修改它,您可以执行以下操作:
//add value to Solr
doc = new SolrInputDocument();
doc.addField("id", "A");
doc.addField("value", 10);
client.add(doc);
client.commit();
//query Solr
SolrQuery q = new SolrQuery("id:A");
QueryResponse r = client.query(q);
//update value
SolrDocument oldDoc = r.getResults().get(0);
SolrInputDocument newDoc = new SolrInputDocument();
newDoc.addField("id", oldDoc.getFieldValue("id");
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("inc", 15);
newDoc.addField("value", map);
client.add(newDoc);
client.commit();
这会将原始值 10 增加到 25。您还可以“添加”到现有字段,或者通过更改您在 HashMap 中输入的命令来简单地“设置”现有值。
关于java - 使用 Java 更新 Solr 中的文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5985860/