我想知道如何在将数据索引到solr中时替换句点[.
]。
除了,我想保留以某些短语开头的单词作为整体标记。
例如,
word.phrase
应该被索引为两个关键字:word
,phrase
但是,我希望前缀为item.
的所有内容都不要以句点分隔,以便:
item.name
应该作为一个关键字建立索引:item.name
我正在尝试使用这些过滤器/令牌器,但还是没有运气,我认为我的正则表达式是罪魁祸首:
<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<charFilter class="solr.PatternReplaceCharFilterFactory"
pattern="[^(item)]\." replacement=" " />
<tokenizer class="solr.StandardTokenizerFactory"/>
</analyzer>
</fieldType>
答案 0 :(得分:1)
为了仅在不以“ bar”开头时匹配“ foo”,您的正则表达式需要negative lookbehind assertion。
以下正则表达式匹配不以“ item”开头的点:(?<!\bitem)\.
。
在schema.xml中,必须正确转义该模式才能正确解析该模式,因此<
变为<
:
pattern="(?<!\bitem)\."
作为替代方案,您可以使用 filter (放置在标记器的之后)而不是charfilter。