7

使用 Solr 3.5.0 并在我的 schema.xml 中,我使用以下内容来标记句子的结尾并将结尾标点符号替换为符号标记:

<charFilter class="solr.PatternReplaceCharFilterFactory" 
pattern="(?<=[^.!?\\s][^.!?]*(?:[.!?](?![']?\s|$)[^.!?]*)*)[.!?]+(?=\\s|$)"
replacement=" monkeysentence"/>

我不确定这是否适用于我想要的,但首先我需要解决在第一个 '?<=' 后面转义 '<' 字符的问题。

我收到以下错误:

org.xml.sax.SAXParseException: The value of attribute "pattern" 
associated with an element type "null" must not contain the '<' character.

我试过使用'\',如:

 pattern="(?\<=[^.!?\\s][^.!?]*(?:[.!?](?![']?\s|$)[^.!?]*)*)[.!?]+(?=\\s|$)"

但我得到同样的错误。

4

1 回答 1

21

由于这是在 XML 文件中,因此您需要使用 XML 转义来对 进行编码<,即&lt;(您可能还需要编码>为 as &gt;"as&quot;&as &amp;

于 2012-04-19T03:05:06.913 回答