具有反向通配符令牌的Facet字段

时间:2017-03-13 13:20:52

标签: solr faceted-search

我的字段定义如下:

<fieldType name="textcleaning" class="solr.TextField" positionIncrementGap="100">
        <analyzer type="index">
            <tokenizer class="solr.WhitespaceTokenizerFactory"/>
            <filter class="solr.PatternReplaceFilterFactory"
                    pattern="^\p{Punct}*(.*?)\p{Punct}*$"
                    replacement="$1"/>
            <filter class="solr.ASCIIFoldingFilterFactory"/>
            <filter class="solr.LowerCaseFilterFactory"/>
            <filter class="solr.ReversedWildcardFilterFactory" withOriginal="true"/>
            <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
        </analyzer>
        <analyzer type="query">
            <tokenizer class="solr.WhitespaceTokenizerFactory"/>
            <filter class="solr.PatternReplaceFilterFactory"
                    pattern="^\p{Punct}*(.*?)\p{Punct}*$"
                    replacement="$1"/>
            <filter class="solr.ASCIIFoldingFilterFactory"/>
            <filter class="solr.LowerCaseFilterFactory"/>
            <filter class="solr.ReversedWildcardFilterFactory" withOriginal="true"/>
            <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
        </analyzer>
    </fieldType>

我想在这个领域面对,但我在答案中得到了直接和反转的标记:

"\u0001fo",90671,
"of",90671,
"\u0001detinu",82915,
"united",82915,
"\u0001grebmoolb",74461,
"bloomberg",74461,

有没有办法从我的方面结果中过滤掉反转的标记?我尝试使用facet.prefix,但没有成功。

1 个答案:

答案 0 :(得分:1)

使用具有您想要的定义的专用字段 - 即创建一个没有ReversedWildcardFilterFactory的类似字段,并将其用于分面。您仍然可以搜索并过滤您已创建的字段。

此外,通常,您通常希望使用StrField进行分面,因为您将为生成的每个标记获得一个方面(如此处所示),但如果您的用例对于每个标记的构面都有意义价值,这个解决方案应该可以正常工作。