Lucene 结果上的保护字?

Lucene 结果上的保护字?,lucene,solr,protected,facet,faceted-search,Lucene,Solr,Protected,Facet,Faceted Search,我正在使用lucene和solr来索引一些文档(新闻)。这些文件也有标题。 现在,我尝试在HEADLINE字段上进行facet搜索,以查找计数最高的术语。 所有这些工作都没有问题,包括停止字列表。 标题字段是多值字段。我使用solr.StandardTokenizerFactory将这些字段拆分为单个术语(我知道,这不是最好的做法,但这是唯一可行的方法) 有时,标记器拆分不应该拆分的术语,如9/11(拆分为9和11)。所以我决定使用一个“protword”列表。“9/11”是这个主题词列表的一部

我正在使用lucene和solr来索引一些文档(新闻)。这些文件也有标题。 现在,我尝试在HEADLINE字段上进行facet搜索,以查找计数最高的术语。 所有这些工作都没有问题,包括停止字列表。 标题字段是多值字段。我使用
solr.StandardTokenizerFactory
将这些字段拆分为单个术语(我知道,这不是最好的做法,但这是唯一可行的方法)

有时,标记器拆分不应该拆分的术语,如
9/11
(拆分为9和11)。所以我决定使用一个“protword”列表。“9/11”是这个主题词列表的一部分。但是没有变化

下面是myschema.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>

查看facet结果,我看到很多处理“9/11”的文档都在“9”或“11”分组(facet),但从来没有“9/11”

为什么这不起作用


谢谢。

问题在于,您无法为您喜欢的任何筛选器/标记器设置受保护的单词。只有某些过滤器支持该功能。因此,
StandardTokenizer
忽略了受保护的单词,并将9/11拆分为“9”“11”。使用
WhitespaceTokenizer
可以确保9/11不会被分割

此外,它看起来也不像StopFilterFactory承认受保护的词(它只是过滤掉像“to”或“and”这样的停止词)。它们使用受保护的词。因此,您可以尝试一下,看看它是否可以帮助您


查看文档是如何分析的最好方法是使用内置的来查看字段在索引或查询时是如何分解的。

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

使用
空白标记器是一个好主意。我将其与
splitOnNumerics一起使用=“0”
WhitespaceTokenizerFactory
结合使用。效果是,“9/11”现在是一个标记,但它没有将“:”与“9/11:”(例如)分开。因此
solr.PatternTokenizerFactory
是一个替代
WhitespaceTokenizer
的方法。它是唯一一个删除标点符号的方法吗?