Обновление документа в Solr с помощью Java - PullRequest
2 голосов
/ 13 мая 2011

Как все знают, документация Solrj в вики довольно скудная. Мне удалось запросить индекс с помощью CommonsHttpSolrServer, но никогда со встроенной версией. В любом случае, теперь я использую EdgeNGrams для отображения авто-предложений, и у меня есть поле «count» в моем индексе, чтобы я мог отсортировать результаты по количеству запросов людей к элементу.

Что я хочу сейчас сделать, так это уметь обновлять это поле «count» в моей Java-программе, что, как мне кажется, должно быть довольно простым? Я посмотрел на тестовые файлы из исходного кода, но это очень сложно, и попытка сделать что-то подобное всегда терпела неудачу для меня. Может быть, с помощью Solrj?

Спасибо за вашу помощь.

Edit: В моем коде Java у меня есть:

CoreContainer.Initializer initializer = new CoreContainer.Initializer();
CoreContainer coreContainer = initializer.initialize();

То, что я ожидаю получить в этот момент, - это определение ядер в solr.xml, присутствующем в coreContainer, но там нет ядра (но defaultCoreName говорит collection1). Мой файл solr.xml такой же, как в примере dir:

<solr persistent="false">
  <cores adminPath="/admin/cores" defaultCoreName="collection1">
    <core name="collection1" instanceDir="." />
  </cores>
</solr>

Ответы [ 3 ]

1 голос
/ 06 октября 2015

Изменено с в этом тестовом примере.Чтобы добавить значение в 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.

1 голос
/ 13 мая 2011

Этот URL был полезен для меня.Есть примеры тестов SOLRJ, вы можете найти много хороших примеров там.

https://svn.apache.org/repos/asf/lucene/solr/tags/release-1.3.0/client/java/solrj/test/org/apache/solr/client/solrj/

Это не документация, но вы должны найти почти все, что возможно, используя SOLRJ.

0 голосов
/ 27 октября 2011

Наконец, я просто сохраняю это число в Solr, затем извлекаю и обновляю его, затем запускаю обновление, так как невозможно обновить одно поле в Solr, а также поле счета, что может быть очень удобно!

...