'<'之间的Solr差异和<

时间:2016-01-14 13:25:53

标签: solr

我在我的solr架构文件

<tokenizer class="solr.PatternTokenizerFactory" pattern="[\s\?\!\:\;\,\(\)\\\*\'#\$%\-\/\=\@\[\]\^\_\{\}\|\~&quot;&lt;&gt;]"/>

Solr在打破这样的文字方面发挥出色

Hello&lt;World&lt;!

但是失败了

Hello<World>!

查询World没有结果,但<World>

的结果很多

如何重写模式以打破<符号?

我尝试CDATA,但它无法正常工作

<tokenizer class="solr.PatternTokenizerFactory" pattern="[\s\?\!\:\;\,\(\)\\\*\'#\$%\-\/\=\@\[\]\^\_\{\}\|\~]|(&quot;|&lt;|&gt;|[CDATA[<]])"/>

和一点修改后的模式

<tokenizer class="solr.PatternTokenizerFactory" pattern="[\s\?\!\:\;\,\(\)\\\*\'#\$%\-\/\=\@\[\]\^\_\{\}\|\~]|(&quot;|&lt;|&gt;)"/>

同样不适合我

更新

解决方案

pattern="[\s\?\!\:\;\,\(\)\\\*\.#\$%\-\/\=\@\[\]\^\_\{\}\|\~&quot;&lt;&gt;«»]|(&amp;lt;)|(&amp;gt;)"

也可以不改变我的第一个模式启用将&lt;转换为<并且解析<

的架构中的html过滤器
<charFilter class="solr.HTMLStripCharFilterFactory"/>

1 个答案:

答案 0 :(得分:1)

您的问题是solr.PatternTokenizerFactory。你想分开&#39;&lt;&#39;。这是一个关于如何逃避&#39;&lt;&#39;在xml。

你的第一种方法是正确的

<tokenizer class="solr.PatternTokenizerFactory" pattern="[\s\?\!\:\;\,\(\)\\\*\'#\$%\-\/\=\@\[\]\^\_\{\}\|\~&quot;&lt;&gt;]"/>

你可以读她:Which are the HTML, and XML, special characters?

所以请用

搜索您的问题
Hello&lt;World&lt;!

通过analysis screen