![](/img/trans.png)
[英]SolrJ - Asynchronously indexing documents with ContentStreamUpdateRequest
[英]Solrj ContentStreamUpdateRequest fails to save all literal fields unless they are dynamic
我正在使用提取請求處理程序來索引html和pdf文件。 除了tika的發現,我還想在tika內容之外添加元數據。 為此,我使用文字=支持。 除非我使用動態字段“ * _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添加到地圖中的鍵值即可。 我不明白為什么除非等與模式中的* _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是否損壞或記錄不良?
此問題是由運行solr的舊碼頭會議引起的。 這樣可以防止選擇架構更新。 一旦我殺死碼頭,一切都會按預期進行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.