ToTitleCase在solr停止尖叫盖在Solr
-
19-09-2019 - |
题
我使用的是solr分组和我遇到一个问题,我希望我能得到使用的过滤器。
基本上一次一个城镇的名字将通过以为SOLR
"剑桥"
有时候是这将通过因为
"剑桥"
我想用一个过滤器在Solr停止尖叫着帽子版本的市镇名称。它似乎还有一个fitler使所有的文本 情况下.
<!-- A text field that only sorts out casing for faceting -->
<fieldType name="text_facet" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
我想知道,如果任何人知道的一个过滤器,将会忽略第一个字一个字,并应用小写的其余的字符。E.g。
- 剑桥>>剑桥
- HULL>>Hull
等等
或者如果它很容易编写自己的过滤器..一些帮助对如何做到这一点,将不胜感激..我不是一个Java人..
感谢
解决方案
据我所知,没有内在的过滤器那样。如果你想要写信,请参阅 LowerCaseFilterFactory 和 LowerCaseFilter 供参考,它不似乎是非常困难的。
或者你可以做这种客户的侧面,即在SolrNet你可以写一ISolrOperations装饰,没有必要的转换后的真正的查询,利用 ToTitleCase.
其他提示
也许你可以使用的solr。PatternReplaceCharFilterFactory?
<fieldType name="textCharNorm" class="solr.TextField">
<analyzer>
<filter class="solr.LowerCaseFilterFactory"/>
<charFilter class="solr.PatternReplaceCharFilterFactory"
pattern="([^\s]{1})([^\s]*)" replaceWith="\U$1\L$2"/>
</analyzer>
</fieldType>
请注意,我没有测试过代码或solr。PatternReplaceCharFilterFactory,所以我不确定如果它的工作。如果你需要建立你自己的过滤器这一指南可能是有用的:
http://robotlibrarian.billdueber.com/building-a-solr-text-filter-for-normalizing-data/
//约翰
不隶属于 StackOverflow