具有反向通配符标记的分面字段
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 用于分面,因为您会为生成的每个标记获得一个分面(正如您在此处看到的那样),但是如果您的用例对每个标记都有一个分面值中的标记,此解决方案应该可以正常工作。
我有一个字段定义如下:
<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 用于分面,因为您会为生成的每个标记获得一个分面(正如您在此处看到的那样),但是如果您的用例对每个标记都有一个分面值中的标记,此解决方案应该可以正常工作。