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 エスケープを使用して をエンコードする必要があります ( as 、<as 、およびas&lt;もエンコードする必要がある場合があります) 。>&gt;"&quot;&&amp;

于 2012-04-19T03:05:06.913 に答える