solr查询return部分归档内容

Solr query return part of filed content

我用Solr索引我的博客,一篇文章可能有几万字。所以当我查询时,响应可能是这样的

"response": {
        "numFound": 4,
        "start": 0,
        "docs": [
            {
                "content": ["abc........"], //the whole article may have 10000 words
                "_id": "5d48f6d598b89e22d07629a0",
                "_version_": 1642371362640101376
            },
            ....
        ]
    }

无需 return 搜索页面中的整篇文章。所以可以return文章的前100个字?

听起来您目前正在存储整篇文章,但只想 return 第一段左右。

最简单的方法是将您的 content 字段标记为仅索引 (stored=false) 并将其克隆到一个单独的 (indexed=false) 字段,该字段将 return你想要什么。

索引期间不能这样做,但可以使用 UpdateRequestProcessors pipeline

所以你会使用

  1. CloneFieldUpdateProcessorFactory
  2. 截断?

挑战实际上是截断到 100 个 单词 ,因为这在语言中立的方式中很难定义(标点符号又如何呢?)。如果您乐于按字符截断,则可以使用 TruncateFieldUpdateProcessorFactory 来实现。但如果你坚持,它必须是单词,你可以查看 RegexReplaceProcessorFactory 并定义与之匹配的正则表达式。