我正在使用提取请求处理器来索引html和pdf文件。除了tika找到的内容之外,我还想在tika的内容之上添加元数据。为此,我使用了literal.=支持。除非我使用动态字段"*_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添加到映射中的键值,这是可行的。我不明白为什么region等不能保存,除非它与模式中的*_s动态字段匹配。我注意到了其他一些问题。我尝试使用copyField将其中一个文字字段移动到用于分面的字段,但在分面字段中看不到任何数据。下面是我尝试过的一些方法
<field name="services_facet" type="string" indexed="true" stored="false" multiValued="true" />
<copyField source="services_s" dest="services_facet"/>在services_facet中从来没有任何东西。我可以在services_s上进行切面,但这不应该起作用吗?Solr-Cell是不是坏了,还是文档记录很差?
发布于 2014-07-22 23:50:50
此问题是由运行solr的旧jetty会话引起的。这阻止了架构更新被拾取。一旦我杀了jetty,事情就像预期的那样。
https://stackoverflow.com/questions/23997588
复制相似问题