【问题标题】:ToTitleCase in solr to stop SCREAMING CAPS in Solrsolr 中的 ToTitleCase 停止在 Solr 中使用 SCREAMING CAPS
【发布时间】:2011-01-14 21:08:45
【问题描述】:

我正在使用 solr 的 faceting,我遇到了一个问题,我希望我可以使用过滤器来解决。

基本上有时一个城镇名称会通过 SOLR 作为

“剑桥”

有时它会通过

“剑桥”

我想在 Solr 中使用过滤器来阻止 SCREAMING CAPS 版本的城镇名称。似乎有一个 fitler 来制作所有的文字lower case

<!-- 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>

我想知道是否有人知道过滤器会忽略单词的第一个字符并将小写字母应用于其余字符。例如

  • 剑桥 >> 剑桥
  • 赫尔河畔金斯敦 >> 赫尔河畔金斯敦

或者,如果编写自己的过滤器很容易.. 一些关于如何做到这一点的帮助将不胜感激.. 我不是 Java 人..

谢谢

【问题讨论】:

    标签: lucene solr filterfactory


    【解决方案1】:

    也许你可以利用 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/

    // 约翰

    【讨论】:

    • 谢谢.. 我去看看。
    【解决方案2】:

    AFAIK 没有这样的内置过滤器。想写的话,参考LowerCaseFilterFactoryLowerCaseFilter,好像不是很难。

    或者您可以在客户端执行此操作,即在 SolrNet 中,您可以编写一个 IsolrOperations 装饰器,在实际查询后使用ToTitleCase 进行必要的转换。

    【讨论】:

    • 我正在使用一个非常旧版本的 SolrNet.. 所以我会看看我是否可以使用 IsolrOperations。但是我认为可能是时候学习 java 了。我知道 c#,所以语法应该不是问题。谢谢 Mauricio
    • ISolrOperations 自修订版 1 以来一直存在 :-) 无论如何,我建议升级到最新版本...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-20
    • 1970-01-01
    • 2012-02-02
    • 1970-01-01
    • 1970-01-01
    • 2015-09-08
    相关资源
    最近更新 更多