首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Solrj ContentStreamUpdateRequest无法保存所有文字字段,除非它们是动态的

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

Stack Overflow用户
提问于 2014-06-02 22:59:35
回答 1查看 351关注 0票数 0

我正在使用提取请求处理器来索引html和pdf文件。除了tika找到的内容之外,我还想在tika的内容之上添加元数据。为此,我使用了literal.=支持。除非我使用动态字段"*_s“,否则数据不会被保存。似乎只有id字段可以像广告中所说的那样工作。我确信我做错了什么。我的schema.xml字段定义:

代码语言:javascript
复制
<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代码:

代码语言:javascript
复制
        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将其中一个文字字段移动到用于分面的字段,但在分面字段中看不到任何数据。下面是我尝试过的一些方法

代码语言:javascript
复制
<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是不是坏了,还是文档记录很差?

EN

回答 1

Stack Overflow用户

发布于 2014-07-22 23:50:50

此问题是由运行solr的旧jetty会话引起的。这阻止了架构更新被拾取。一旦我杀了jetty,事情就像预期的那样。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23997588

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档