在Solr 7.x中,如何仅使用逗号而不是空格或其他特殊字符进行标记?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Solr 7.x中,如何仅使用逗号而不是空格或其他特殊字符进行标记?相关的知识,希望对你有一定的参考价值。
在我的架构中,我有一列以逗号分隔的actor列表。例如,Chris Pratt,Vin Diesel,Bradley Cooper,Zoe Saldana。另一列用逗号分隔的流派。例如Action,Adventure,Sci-Fi。在这两种情况下,我只想在','而不是在空格或' - '上进行标记。我尝试按另一个stackoverflow问题的建议创建新的FieldType,
<fieldType name="commaDelimited" class="solr.TextField">
<analyzer>
<tokenizer class="solr.PatternTokenizerFactory" pattern="[,]" />
</analyzer>
</fieldType>
它正在分裂','但它也分裂在空白和' - '上,导致像克里斯,普拉特,维恩,迪塞尔,布拉德利,库珀,佐伊,萨尔达娜,科幻,菲尔等标记。我希望它只能在','而不是任何其他特殊角色上分开。我怎样才能做到这一点 ?
答案
您可以使用我详细介绍in another recent answer的相同概念:
<fieldType name="comma-separated-list" class="solr.TextField">
<analyzer>
<tokenizer class="solr.SimplePatternTokenizerFactory" pattern="[^,]+"/>
</analyzer>
</fieldType>
SimplePatternTokenizer类似于PatternTokenizer,但仅支持完整正则表达式语法的子集。这使得这样的任务更快。上面给出的模式将在,
上分割标记(即捕获到每个,
的所有内容)。
要通过API添加字段,您可以使用:
curl -X POST -H 'Content-type:application/json' --data-binary '{
"add-field-type" : {
"name":"comma-separated-list",
"class":"solr.TextField",
"positionIncrementGap":"100",
"analyzer" : {
"tokenizer":{
"class":"solr.SimplePatternTokenizerFactory", "pattern": "[^,]+" },
}
}
}
}' http://localhost:8983/solr/collectionname/schema
另一答案
尝试使用以下标记生成器:
<tokenizer class = "solr.PatternTokenizerFactory" pattern = " s *,:; s *" />
以上是关于在Solr 7.x中,如何仅使用逗号而不是空格或其他特殊字符进行标记?的主要内容,如果未能解决你的问题,请参考以下文章