Solr:地方和solr.ICUCollat​​ionField用法?

时间:2014-07-16 13:20:09

标签: solr lucene

我正在学习Solr并且在试图弄清ICUCollat​​ion,它做什么,它是什么以及如何使用它时变得困惑。来自here。我还没有在网上找到任何好的解释。该文档似乎在说我需要使用这个ICUCollat​​ion并暗示它对我来说是神奇的东西,但似乎并不能解释为什么或究竟是什么,以及它如何与其他任何东西集成。

假设我有一个法语文本字段,我想删除停用词,重音符号,标点符号和案例被忽略和阻止...... ICUCollat​​ion是如何形成的?我是否设置了solr.ICUCollationFieldlocale='fr',它会自动执行其他所有操作吗?或者我是否设置solr.ICUCollationField然后再设置标记器和过滤器?或者我根本不使用solr.ICUCollationField,因为那些完全不同的东西?如果是的话那么呢?

2 个答案:

答案 0 :(得分:2)

排序规则为the organisation of written information into an order - ICUCollactionField(the API documentation also provides a good description)旨在使您能够提供区域设置感知排序,因为排序顺序由文化规范和特定语言属性定义。这对于允许基于这些规则的不同排序是有用的,例如挪威语和瑞典语之间的区别,瑞典人在Æ/Ä和Ø/Ö之前订购Å,而挪威人会命令它Æ/Ä,Ø/Ö和Å。

由于您通常不希望按标记化字段(例外:KeywordTokenizer)或多值字段进行排序,因此通常不会处理这些字段,只允许执行排序/排序。

还有一种情况需要用于搜索的校对过滤器,因为在实践中搜索只是比较。这意味着如果您的目标是搜索两个在提供的语言环境中进行比较时相同的单词,那么它就会受到影响。索引的标记在检查时没有任何意义,但只要在索引和搜索时将值减少到相同的标记,它就会起作用。有an example of this on the wiki under UnicodeCollation

排序规则不会影响停用词(StopFilterFactory),重音符号(ICUFoldingFilterFactory),标点符号,大小写(取决于区域设置 - 如果排序的区域设置是区分大小写的,那么它不会)({{ 3}}或LowercaseFilterFactory)或词干(ICUNormalizer2FilterFactory)。看看建议的过滤器。 Solr中的大多数过滤器或标记器都执行非常具体的任务,并尽量避免在一个过滤器中执行“所有内容和厨房接收器”。

答案 1 :(得分:1)

如果您想要执行不同的操作,通常会有两个或多个字段用于一个文本输入:

  • 搜索:文本分析
  • 排序:语言敏感/不区分大小写排序
  • facet:string

对于搜索,请使用以下内容:

<fieldType name="textFR" class="solr.TextField" positionIncrementGap="100">
    <analyzer>
        <tokenizer class="solr.ICUTokenizerFactory"/>
        <filter class="solr.ICUFoldingFilterFactory"/>
        <filter class="solr.ElisionFilterFactory"/>
        <filter class="solr.KeywordRepeatFilterFactory"/>
        <filter class="solr.FrenchLightStemFilterFactory"/>
        <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
    </analyzer>
</fieldType>

用于分类使用:

<fieldType name="textSortFR" class="solr.ICUCollationField"
           locale="fr"
           strength="primary" />

或简单地说:

<fieldType name="textSort" class="solr.ICUCollationField"
           locale=""
           strength="primary" />

(如果你必须支持多种语言。在大多数情况下应该能够正常工作。)

请使用SOLR Admin中的Analysis UI:打开索引的分析视图,选择字段类型(例如排序字段),在左侧文本区域添加代表性输入值,并在右侧字段(在排序的情况下,此右侧值不像排序字段不用于匹配那样有趣。)

输出将显示是否:

  • 重音被删除
  • 删除了某些内容
  • 应用下壳

例如,如果您发现elisions(l'工作室)没有删除(工作室),但您想将其丢弃以进行排序,则必须添加elision过滤器(请参阅上面搜索字段类型的示例)。 / p>

https://cwiki.apache.org/confluence/display/solr/Language+Analysis