我需要删除内容中的所有 \ n 。我决定使用 PatternReplaceCharFilterFactory ,我需要添加到schema.xml
<filter class="solr.PatternReplaceCharFilterFactory" pattern="\n" replace="all" replacement=""/>
使用API调用。但是,solr编码这种模式。 我打电话给
curl -X "POST" "http://localhost:$PORT/solr/$CORE_NAME/schema" \
-H "Content-Type: application/json" \
-d $'{
"add-field-type": {
........
"indexAnalyzer": {
"filters": [
{
"class": "solr.PatternReplaceCharFilterFactory",
"pattern":"\n",
"replacement":"",
"replace":"all"
},]
...........
}
但是solr在schema.xml中创建
<filter class="solr.PatternReplaceCharFilterFactory" pattern="
" replace="all" replacement=""/>
我尝试添加 \ n,\ n,(\ n),但结果相同,不起作用。
答案 0 :(得分:1)
逃脱的反斜杠对我有用:"pattern": "\\n"
。
我在托管架构文件中检查过:
<fieldType name="myNewTextField" class="solr.TextField">
<analyzer type="index">
<tokenizer class="solr.PathHierarchyTokenizerFactory" delimiter="/"/>
<filter class="solr.PatternReplaceCharFilterFactory" pattern="\n" replace="all" replacement=""/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.KeywordTokenizerFactory"/>
</analyzer>
</fieldType>
所以完整的curl命令看起来像:
curl -X POST -H 'Content-type: application/json' "http://localhost:8983/solr/gettingstarted/schema" -d '{
"add-field-type": {
"name": "myNewTextField",
"class": "solr.TextField",
"indexAnalyzer": {
"tokenizer": {
"class": "solr.PathHierarchyTokenizerFactory",
"delimiter": "/"
},
"filters": [
{
"class": "solr.PatternReplaceCharFilterFactory",
"pattern": "\\n",
"replacement": "",
"replace": "all"
}
]
},
"queryAnalyzer": {
"tokenizer": {
"class": "solr.KeywordTokenizerFactory"
}
}
}
}'