我是 Solr 的新手,在 solr 云模式下使用 Solr 7.3.1 并尝试在 solr 中索引 pdf、office 文档,在 solr 中使用 contentextraction。
我创建了一个集合
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();
}
}
我遇到了多个问题
虽然我在 Solr Admin UI 中创建了字段
ts_ref
,text_general
但根本没有设置此字段。我的目标是在一个字段中索引完整的文档,包括其元数据,然后在另一个系统中设置多个引用文档的字段,例如 ts_ref 字段。但实际发生的是 solr 提取文件的元数据并为每个元数据值创建单独的文件。
我试过 data driven schema functionality
禁用bin\solr config -c tsindex -zkHost localhost:9983 -property update.autoCreateFields -value false
当我solrRequest.setParam("defaultField", "text");
从一开始就取消注释行时,提取的所有元数据都没有单独的字段,但是一旦我注释了这一行并上传文件,元数据就会再次出现在单独的字段中(即使我再次取消注释)。