gpt4 book ai didi

java - 如何减少 Solr 中多值字段的长度

转载 作者:行者123 更新时间:2023-12-01 09:06:17 25 4
gpt4 key购买 nike

我们在 Solr 中有一个多值字段,我们希望减少其长度。结果响应示例如下:

 response": {
"numFound": 1,
"start": 0,
"docs": [
{
"created_date": "2016-11-23T13:47:46.55Z",
"solr_index_date": "2016-12-01T08:21:59.78Z",
"modified_date": "2016-12-13T08:45:44.507Z",
"id": "FEAE38C2-ABFF-4F0C-8AFD-9B8F51036D8A",
"Field1": [
"false",
"true",
"true",
..... <= 1200 items
]
}
]
}

我们有大数据,几 TB,我们正在寻找一种优化方法来更改 Solr 中的所有文档并修改 Field1 以仅包含前 100 个项目。

是否可以完成这样的事情,而无需编写脚本来手动获取文档、进行调整并将其推回 solr?有人有类似的经历吗?谢谢

最佳答案

我们遇到过这个问题。但我们使用两个集合来解决这个问题。使用 SoleEntityProcessor 将文档从一个集合移动到另一个集合。

[SolrEntityProcessor]

<dataConfig>
<document>
<entity name="sep" processor="SolrEntityProcessor" url="http://localhost:8983/solr/db" query="*:*"/>
</document>
</dataConfig>

在移动时,通过 updateRequestProcessorChain 传递该文档,我们可以在其中编写 StatelessScriptUpdateProcessorFactory 来编辑文档或截断多值字段。
在 StatelessScriptUpdateProcessorFactory 中,您可以获取该字段并应用您的操作,然后重置该字段。

[StatelessScriptUpdateProcessorFactory]

function processAdd(cmd) {
doc = cmd.solrDoc;
multiDate = doc.getFieldValue("multiValueField");
//Apply your operation to above field
//doc.setField("multiValueField",value);

}
function processDelete(cmd) {
// no-op
}

function processMergeIndexes(cmd) {
// no-op
}

function processCommit(cmd) {
// no-op
}

function processRollback(cmd) {
// no-op
}

function finish() {
// no-op
}

有关StatelessScriptUpdateProcessorFactory的更多信息,可以引用这个问题 On solr how can i copy selected values only from multi valued field to another multi valued field?他们使用脚本编辑多值字段。

关于java - 如何减少 Solr 中多值字段的长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41257152/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com