solr - Solr Cloud:如何将文档(pdf、office)元数据禁用为字段
问题描述
我是 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");
从一开始就取消注释行时,提取的所有元数据都没有单独的字段,但是一旦我注释了这一行并上传文件,元数据就会再次出现在单独的字段中(即使我再次取消注释)。
解决方案
- "litral.ts_ref" 这里有一个错字,缺少一个 e
- 您可以通过使用 uprefix 字段和与之配套的动态字段来实现忽略所有元数据字段。请参阅显示该案例的文档。
推荐阅读
- c# - 我怎样才能有一个什么都不做的 LINQ where 子句?
- css - 为什么顺风 css 类名中有反斜杠?
- json - 匹配两个Json响应时忽略一个键
- tex - 如何在多行闭括号内居中数学表达式?
- django-rest-framework - Django Rest Framework 文档嵌套序列化程序
- batch-file - 在for循环中获取目录的最后一部分,使用cd,并在一行中
- c++ - DLL 导出类:抽象基类和 pimpl?
- amazon-web-services - AWS:有没有办法暂停/取消暂停 Elastic LoadBalancers 的流量?
- reactjs - ReactJs - Axios - 如何获取分段文件上传进度
- python - Scrapy ModuleNotFoundError:没有名为“MySQLdb”的模块