2011-05-12 8 views
2

誰もが知っているように、WikiのSolrjのドキュメントはかなり貧弱です。私はCommonsHttpSolrServerを使ってインデックスを照会することができましたが、Embeddedバージョンでは決してしませんでした。とにかく、私はEdgeNGramsを使って自動提案を表示しています。インデックスには「count」というフィールドがあります。その結果、ユーザーが要素をクエリした回数で結果を並べ替えることができます。JavaでSolrでドキュメントを更新する

私が今やりたいことは、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> 
+0

何を試しましたか?どのように失敗したのですか? –

+0

まあ、私はXmlUpdateRequestHandlerを使って試してみたのですが、ある時点でSolrCoreを取得する必要があるSolrQueryRequestBaseを使う必要があります。コアを取得するには、コアコンテナを取得した後にコアがないことがわかったので、どうやってやるのか分からなかったかもしれませんが、solr.xmlにコアがあると確信しています。 – Guillaume

+0

上記のコメントを実行またはデバッグできません:)実際のコードと実際の例外を掲載できますか? –

答えて

1

最後にSolrにこの数を保存し、それを取り出して更新してから、Solrの1つのフィールドとカウントフィールドを更新することができないため、更新を実行します。

+0

こんにちは、私はSOLRの更新に関するこの質問に答えることができますhttps://stackoverflow.com/questions/45753129/how-to-update-data-in-solr – ashworx

1

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(); 

これは、あなたはまた、既存のフィールドに「追加」または単に既存の「設定」することができます25元の10値をインクリメントどのコマンドをHashMapに置いたかを変更することで、

関連する問題