gpt4 book ai didi

java - 使用 Java 更新 Solr 中的文档

转载 作者:行者123 更新时间:2023-11-30 09:49:06 26 4
gpt4 key购买 nike

众所周知,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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com