我在我的solr架构文件
中<tokenizer class="solr.PatternTokenizerFactory" pattern="[\s\?\!\:\;\,\(\)\\\*\'#\$%\-\/\=\@\[\]\^\_\{\}\|\~"<>]"/>
Solr在打破这样的文字方面发挥出色
Hello<World<!
但是失败了
Hello<World>!
查询World
没有结果,但<World>
如何重写模式以打破<
符号?
我尝试CDATA,但它无法正常工作
<tokenizer class="solr.PatternTokenizerFactory" pattern="[\s\?\!\:\;\,\(\)\\\*\'#\$%\-\/\=\@\[\]\^\_\{\}\|\~]|("|<|>|[CDATA[<]])"/>
和一点修改后的模式
<tokenizer class="solr.PatternTokenizerFactory" pattern="[\s\?\!\:\;\,\(\)\\\*\'#\$%\-\/\=\@\[\]\^\_\{\}\|\~]|("|<|>)"/>
同样不适合我
更新
解决方案
pattern="[\s\?\!\:\;\,\(\)\\\*\.#\$%\-\/\=\@\[\]\^\_\{\}\|\~"<>«»]|(&lt;)|(&gt;)"
也可以不改变我的第一个模式启用将<
转换为<
并且解析<
<charFilter class="solr.HTMLStripCharFilterFactory"/>
答案 0 :(得分:1)
您的问题是solr.PatternTokenizerFactory。你想分开&#39;&lt;&#39;。这是一个关于如何逃避&#39;&lt;&#39;在xml。
你的第一种方法是正确的
<tokenizer class="solr.PatternTokenizerFactory" pattern="[\s\?\!\:\;\,\(\)\\\*\'#\$%\-\/\=\@\[\]\^\_\{\}\|\~"<>]"/>
你可以读她:Which are the HTML, and XML, special characters?
所以请用
搜索您的问题Hello<World<!