我正在使用Extracting Request Handler索引html和pdf文件。随着tika的发现,我想在tika的内容之外添加元数据。要做到这一点,我使用文字。=支持。除非我使用动态字段" * _ s"数据未保存。 只有id字段似乎像宣传的那样工作。我确定我做错了什么。 我的schema.xml字段定义:
<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" />
<!-- The following fields don't work, need to use dynamic fields for some reason -->
<field name="region" type="text_general" indexed="true" stored="true" multiValued="true"/>
<field name="href" type="text_general" indexed="true" stored="true" multiValued="true"/>
<field name="services" type="text_general" indexed="false" stored="true" multiValued="true" />
我的Solrj代码:
ContentStreamUpdateRequest req = new ContentStreamUpdateRequest("/update/extract");
ContentStream contentStream = new ContentStreamBase.StringStream(contentBean.getContent());
req.addContentStream(contentStream);
req.setParam("literal.region", region);
req.setParam("literal.href", contentBean.getHref());
req.setParam("literal.id", getDocId(url));
for (Map.Entry<String,String> entry : getFacetsFromURL(url).entrySet()) {
logger.info("Setting facet field {} to {}", entry.getKey(), entry.getValue());
req.setParam("literal." + entry.getKey(), entry.getValue());
}
// index h1 tag
req.setParam("fmap.tags_h1", "h1");
req.setParam("capture", "h1");
// index img tag
req.setParam("fmap.img", "tags_img");
req.setParam("capture", "img");
// lowercase tag names
req.setParam("lowernames", "true");
/*
* Passing commitWithin as a parameter seems
* to be the only way to get it to work with
* this request handler
*/
req.setParam("commitWithin", "10000");
/*
* Now do the work!
*/
req.process(server);
将region更改为region_s,将href更改为href_s并将_s添加到地图中的键值,可以正常工作。我不明白为什么区域等不会被保存,除非它与模式中的* _s动态字段匹配。 我注意到了其他一些问题。我试图使用copyField将其中一个文字字段移动到一个字段进行分面,我从未在构面字段中看到任何数据。以下是我尝试过的一些方法
<field name="services_facet" type="string" indexed="true" stored="false" multiValued="true" />
<copyField source="services_s" dest="services_facet"/>
services_facet中从未有任何内容。我可以面对服务_但不应该这样做吗? Solr-Cell是破碎还是记录不清?
答案 0 :(得分:0)
此问题是由运行solr的旧jetty会话引起的。这样就无法获取架构更新。 一旦我杀死了码头,事情就会按预期发挥作用。