4

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

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

提前谢谢了!

塞布

4

2 回答 2

3

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

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

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

...

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

<!-- The StrField type is not analyzed, but indexed/stored verbatim. -->
<fieldType name="string" class="solr.StrField" sortMissingLast="true" omitNorms="true"/>
于 2012-01-10T16:12:18.390 回答
1

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

于 2012-01-10T15:53:27.283 回答