Solrj ContentStreamUpdateRequest无法保存所有文本字段,除非它们是动态的
我正在使用提取请求处理程序为html和pdf文件编制索引。除了tika发现的内容之外,我还想在tika内容之上添加元数据。为此,我使用literal.=support。除非我使用动态字段“*\s”,否则不会保存数据。 只有id字段似乎与公布的一样工作。我肯定我做错了什么。 My schema.xml字段定义:Solrj ContentStreamUpdateRequest无法保存所有文本字段,除非它们是动态的,solr,solrj,solr-cell,Solr,Solrj,Solr Cell,我正在使用提取请求处理程序为html和pdf文件编制索引。除了tika发现的内容之外,我还想在tika内容之上添加元数据。为此,我使用literal.=support。除非我使用动态字段“*\s”,否则不会保存数据。 只有id字段似乎与公布的一样工作。我肯定我做错了什么。 My schema.xml字段定义: <field name="id" type="string" indexed="true" stored="true" required="true" multiValued="fa
<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);
ContentStreamUpdateRequest req=newcontentstreamupdaterequest(“/update/extract”);
ContentStream ContentStream=new ContentStreamBase.StringStream(contentBean.getContent());
请求addContentStream(contentStream);
请求setParam(“literal.region”,region);
setParam(“literal.href”,contentBean.getHref());
setParam(“literal.id”,getDocId(url));
for(Map.Entry:getFacetsFromURL(url.entrySet()){
info(“将方面字段{}设置为{}”,entry.getKey(),entry.getValue());
setParam(“literal.”+entry.getKey(),entry.getValue());
}
//索引h1标签
要求设置参数(“fmap.标签_h1”、“h1”);
要求设置参数(“捕获”、“h1”);
//索引img标签
要求设置参数(“fmap.img”、“tags_img”);
要求设置参数(“捕获”、“img”);
//小写标记名
请求setParam(“lowernames”、“true”);
/*
*将commitWithin作为参数传递似乎
*这是让它工作的唯一方法
*此请求处理程序
*/
要求设置参数(“commitWithin”、“10000”);
/*
*现在开始工作!
*/
请求进程(服务器);
将region更改为region_s,href更改为href_s,并将_s添加到地图中的键值,这样做是有效的。我不明白为什么区域etc不保存,除非它与模式中的*动态字段匹配。
我注意到了其他一些问题。我尝试使用copyField将其中一个文本字段移动到用于镶嵌面的字段,但在镶嵌面字段中从未看到任何数据。以下是我尝试的一些方法
<field name="services_facet" type="string" indexed="true" stored="false" multiValued="true" />
<copyField source="services_s" dest="services_facet"/>
服务方面从来没有任何东西。我可以在服务上分面,但这不应该吗?Solr单元是否已损坏或只是文档记录不足?此问题是由运行Solr的旧jetty会话引起的。这导致无法获取架构更新。 有一次我杀了杰蒂,一切都如期进行