私はSolrを初めて使用し、solrクラウドモードでSolr 7.3.1を使用し、solrでcontentextractionを使用して、solrでpdf、オフィスドキュメントのインデックスを作成しようとしています。
でコレクションを作成しました
bin\solr create -c tsindex -s 2 -rf 2
SolrJで私のコードは次のようになります
public static void main(String[] args) {
System.out.println("Solr Indexer");
final String solrUrl = "http://localhost:8983/solr/tsindex/";
HttpSolrClient solr = new HttpSolrClient.Builder(solrUrl).build();
String filename="C:\\iSampleDocs\\doc-file.doc";
ContentStreamUpdateRequest solrRequest = new ContentStreamUpdateRequest("/update/extract");
try {
solrRequest.addFile(new File(filename), "application/msword");
solrRequest.setParam("litral.ts_ref", "ts-456123");
//solrRequest.setParam("defaultField", "text");
solrRequest.setAction(AbstractUpdateRequest.ACTION.COMMIT, true, true);
NamedList<Object> result= solr.request(solrRequest);
System.out.println(result);
} catch (IOException e) {
e.printStackTrace();
}catch ( SolrServerException e) {
e.printStackTrace();
}
}
複数の問題が発生しています
ts_ref
Solr Admin UI のようにフィールドを作成しましtext_general
たが、このフィールドはまったく設定されません。私の目標は、1 つのフィールドにメタデータを含む完全なドキュメントのインデックスを作成し、ts_ref フィールドなどの別のシステムでドキュメントを参照するいくつかのフィールドを設定することです。しかし実際には、solr がファイルのメタデータを抽出し、メタデータ値ごとに個別のフィールドを作成します。
無効にしてみ data driven schema functionality
ましたbin\solr config -c tsindex -zkHost localhost:9983 -property update.autoCreateFields -value false
行のコメントsolrRequest.setParam("defaultField", "text");
を最初から外すと、抽出されたすべてのメタデータに個別のフィールドはありませんが、この行にコメントを付けてファイルをアップロードするとすぐに、メタデータは後で別のフィールドになります (再度コメントを外しても)。