Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Solrj ContentStreamUpdateRequest无法保存所有文本字段,除非它们是动态的_Solr_Solrj_Solr Cell - Fatal编程技术网

Solrj ContentStreamUpdateRequest无法保存所有文本字段,除非它们是动态的

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

我正在使用提取请求处理程序为html和pdf文件编制索引。除了tika发现的内容之外,我还想在tika内容之上添加元数据。为此,我使用literal.=support。除非我使用动态字段“*\s”,否则不会保存数据。 只有id字段似乎与公布的一样工作。我肯定我做错了什么。 My 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);
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会话引起的。这导致无法获取架构更新。 有一次我杀了杰蒂,一切都如期进行