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