0

我正在使用 SolrJ+SolrCell 来索引各种 Word/Excel/PDF 文件的内容,但是我希望自己能够设置一些字段(例如 id、名称):

ContentStreamUpdateRequest req = new ContentStreamUpdateRequest("/update/extract");
req.addFile(docFile, null);
req.setParam("literal.id", docProperties.getId());
req.setParam("literal.name", docProperties.getName());

我对普通字段没有任何问题,但我发现当我尝试使用相同的 setParam 方法设置多值字段时,只存储输入数组中的最后一个元素:

if (docProperties.getCategories() != null) {
    for (String category : docProperties.getCategories()) {
        req.setParam("literal.categories", category);
    }
}

例如,如果docProperties.getCategories()是 ["News", "Computers", "Tech"],则存储在多值类别字段中的唯一值是 ["Tech"]。我实际上对此并不感到惊讶,因为我认为使用该setParam方法不是将值附加到多值字段的正确方法。

但是,我不知道如何使用可用的ContentStreamUpdateRequest方法来做到这一点。如果我正在使用 SolrInputDocument,那么只需将数组传递给addField方法即可。

String[] categoriesArray = {"News", "Computers", "Tech"};
ArrayList<String> categories = new ArrayList<String>(Arrays.asList(categoriesArray));
doc.addField("categories", categories );

有没有办法使用 ContentStreamUpdateRequest 做同样的事情?

4

1 回答 1

0

http://wiki.apache.org/solr/ExtractingRequestHandler#SolrJ,使用ModifiableSolrParams设置这些文字参数适用于多值字段。

于 2014-02-03T22:14:11.440 回答