9

solr サーバーでドキュメントのインデックスを作成するためのクライアントとして solrj を使用しています。

Solr サーバーから 'id' でインデックスを削除する際に問題が発生しています。次のコードを使用してインデックスを削除しています。

server.deleteById("id:20");
server.commit(true,true);

この後、ドキュメントを再度検索すると、検索結果には上記のドキュメントも含まれます。このコードで何が問題なのかわかりません。問題を解決してください。

ありがとう!

4

4 に答える 4

17

deleteById を呼び出すときは、クエリ構文を使用せずに ID のみを使用します。

server.deleteById("20");
server.commit();
于 2010-05-02T14:33:23.053 に答える
1

ドキュメントを削除したら、サーバーをコミットし、次の行を追加します。サーバーのコミット行の後。

  UpdateRequest req = new UpdateRequest();
  req.setAction( UpdateRequest.ACTION.COMMIT, false, false );
  req.add( docs );
  UpdateResponse rsp = req.process( server );
于 2011-01-28T09:56:10.450 に答える
-1

したがって、deleteById は、1 つの属性のみを使用してキーを形成している場合にのみ機能します。そのため、id が employeeId+deptId のような複数の属性の組み合わせである場合がありました。しかし、私のテーブルには、employeeIdとdeptIdが別々の列としてあり、インデックスが作成されていました。したがって、レコードを削除したいときは、employeeId のみがあり、deptId はありませんでした。curl コマンドを使用して、列とその値を指定できる場所を削除すると、レコード全体が削除されます。

例 curl http://localhost:8983/solr/update --data ' : ' -H 'Content-type:text/xml; 文字セット=utf-8'

于 2015-03-23T17:51:31.620 に答える