facet-results上受保护的单词?

时间:2011-09-09 15:10:31

标签: lucene solr protected facet faceted-search

我使用lucene和solr索引一些文件(新闻)。那些文件也有HEADLINE。 现在,我尝试在HEADLINE字段上进行构面搜索,以查找具有最高计数的术语。 所有这一切都没有问题,包括一个禁用词列表。 HEADLINE字段是多值字段。我使用solr.StandardTokenizerFactory将这些字段分成单个术语(我知道,这不是最佳实践,但这是唯一的方法,并且它有效)。

有时,标记生成器会分割不应分割的术语,如9/11(分为9和11)。所以我决定使用“protword”列表。 “9/11”是这个保护名单的一部分。但没有变化。

这是我的schema.xml

中的部分
  <fieldType name="facet_headline" class="solr.TextField" omitNorms="true">
        <analyzer>
            <tokenizer class="solr.StandardTokenizerFactory" protected="protwords.txt"/>
            <filter class="solr.LowerCaseFilterFactory"/>
            <filter class="solr.TrimFilterFactory" />
            <filter class="solr.StopFilterFactory"
                    ignoreCase="true"
                    words="stopwords.txt"
                    enablePositionIncrements="true"
                protected="protwords.txt"
                />
        </analyzer>
   </fieldType>

查看分面结果,我看到很多文件处理“9/11”分组(刻面)在“9”或“11”但从未“9/11”。

为什么这不起作用?

谢谢。

2 个答案:

答案 0 :(得分:1)

问题是您无法为任何您喜欢的过滤器/标记器设置受保护的单词。只有某些过滤器支持该功能。因此,无论如何,StandardTokenizer忽略了你的受保护词并将9/11分成'9''11'。使用WhitespaceTokenizer可以确保9/11不被分割。

此外,它看起来不像StopFilterFactory承认受保护的单词(它只是过滤掉'to'或'和'之类的停止词。WordDelimiterFilterFactory使用受保护的单词。所以,你可以尝试一下看看它是否可以帮到你。

查看文档分析方式的最佳方法是使用内置的Solr administration utility来查看字段在编制索引或查询时如何细分。

答案 1 :(得分:0)

该问题的最终解决方案是选择solr.PatternTokenizerFactory