【问题标题】:Solr: Facet counts indexes cannot be strings?Solr:构面计数索引不能是字符串?
【发布时间】:2012-02-07 00:44:42
【问题描述】:

在创建构面值列表时,我的架构中有这个:

<field name="contract_facet_sector_ids" type="text" indexed="true" stored="true" multiValued="true" required="false" />

我要存储的构面是“1_1”、“2_43”、“2_99”等字符串。但是,当我查看返回的构面计数数据时,下划线似乎已被删除:

[facet_fields] => Array
        (
            [contract_facet_sector_ids] => Array
                (
                    [11] => 0
                    [243] => 0
                    [299] => 0

有人可以帮我解决我哪里出错了吗? “文本”字段类型的定义如下:

<fieldType name="text" class="solr.TextField" positionIncrementGap="100">
    <analyzer type="index">
        <tokenizer class="solr.WhitespaceTokenizerFactory" />
        <filter class="solr.StopFilterFactory"
            ignoreCase="true" words="stopwords.txt"
            enablePositionIncrements="true" />
        <filter class="solr.WordDelimiterFilterFactory" 
            generateWordParts="1" generateNumberParts="1" 
            catenateWords="1" catenateNumbers="1" 
            catenateAll="0" splitOnCaseChange="1" />
        <filter class="solr.LowerCaseFilterFactory" />
        <filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt" />
    </analyzer>
    <analyzer type="query">
        <tokenizer class="solr.WhitespaceTokenizerFactory" />
        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true" />
        <filter class="solr.StopFilterFactory"
            ignoreCase="true" words="stopwords.txt"
            enablePositionIncrements="true" />
        <filter class="solr.WordDelimiterFilterFactory" 
            generateWordParts="1" generateNumberParts="1" 
            catenateWords="0" catenateNumbers="0" 
            catenateAll="0" splitOnCaseChange="1" />
        <filter class="solr.LowerCaseFilterFactory" />
        <filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt" />
    </analyzer>
</fieldType>

非常感谢!

Seb

【问题讨论】:

    标签: string solr facets


    【解决方案1】:

    Solr 的分析页面将向您展示如何在不同步骤中分析您的文本

    【讨论】:

    • 啊,是的,完全正确,我应该先这样做——我很抱歉;很久没用 Solr 了。
    【解决方案2】:

    WordDelimiterFilterFactory 导致您的下划线被删除。基于以下几点:

    将单词拆分为子单词并执行可选的转换 子词组。默认情况下,单词被拆分为子单词 以下规则:

    在单词内分隔符上拆分(所有非字母数字字符)。 “Wi-Fi”->“Wi”、“Fi”

    ...

    根据您如何使用此字段的描述 - “我要存储的构面是字符串...”。我建议您使用下面定义的string fieldType(来自 Solr 示例),除非您确实需要应用其他分析器。

    <!-- The StrField type is not analyzed, but indexed/stored verbatim. -->
    <fieldType name="string" class="solr.StrField" sortMissingLast="true" omitNorms="true"/>
    

    【讨论】:

    • 优秀。我将为此字段使用“字符串”类型重新构建我的索引。真的非常感谢大家。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-19
    • 1970-01-01
    • 2015-10-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多