具有反向通配符标记的分面字段

Facet field with reversed wildcard tokens

我有一个字段定义如下:

<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=""/>
            <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=""/>
            <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,但没有成功。

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

此外,一般来说,您通常希望将 StrField 用于分面,因为您会为生成的每个标记获得一个分面(正如您在此处看到的那样),但是如果您的用例对每个标记都有一个分面值中的标记,此解决方案应该可以正常工作。