SOLRJをクライアントとして使用したSOLRからインデックスを削除します
質問
SOLRサーバー上のドキュメントのインデックス作成用のクライアントとしてSOLRJを使用しています。
SOLRサーバーから「ID」でインデックスを削除しているときに問題があります。次のコードを使用してインデックスを削除しています。
server.deleteById("id:20");
server.commit(true,true);
その後、ドキュメントを再度検索すると、検索結果には上記のドキュメントも含まれています。このコードで何が問題になっているのかわからない。問題を手伝ってください。
ありがとう!
解決
DeleteByIDを呼び出すときは、クエリの構文なしでIDを使用するだけです。
server.deleteById("20");
server.commit();
他のヒント
ドキュメントを削除したら、サーバーをコミットし、次の行を追加します。サーバーのコミットラインの後。
UpdateRequest req = new UpdateRequest();
req.setAction( UpdateRequest.ACTION.COMMIT, false, false );
req.add( docs );
UpdateResponse rsp = req.process( server );
メソッドを使用します deleteByQuery() クエリに一致するドキュメントを削除するには:
server.deleteByQuery("id:20");
server.commit();
したがって、DeleteByIDは、1つの属性のみを使用してキーを形成している場合にのみ機能します。そのため、IDがEmployeeID+Deptidのような複数の属性の組み合わせである場合がありました。しかし、私のテーブルには、従業員とDeptidが別々の列として、その上にインデックスが作成されていました。そのため、レコードを削除したいときは、従業員のみがDeptIDではなくemployedのみでした。 Curlコマンドを使用して、列とその値を指定できる場所を削除すると、レコード全体が削除されます。
例えば、カール http:// localhost:8983/solr/update - データ ':'-H' Content -Type:text/xml; charset = utf-8 '
所属していません StackOverflow