如何仅在非名词时删除停用词?

How to only remove stopwords when they are not nouns?

我正在使用 Solr 5,需要删除停用词以防止过度匹配并避免使用高 IDF 术语使索引膨胀。但是,语料库包含很多部件号和姓名首字母,例如 "Steve A" 和“123-OR-A”。在那些情况下,我不希望 "A" 和 "OR" 被停用词过滤器工厂删除,因为它们需要可搜索。

Stanford POS tagger 在检测上述示例是名词而不是停用词方面做得很好,但这是解决我问题的正确方法吗?

谢谢!

只有您才能决定这是否是正确的方法。如果您可以集成 POS 标记器并为您提供有用的结果 - 那很好。

但为了给您一个替代方案,您可以考虑复制您的字段并以不同方式处理它们。例如,如果您看到 123-OR-A 被拆分和清除停用词,这可能意味着您的分析器堆栈中有 WordDelimiterFilterFactory。那个工厂有很多你可以尝试调整的参数。或者,您可以 copyField 您的内容到另一个 (store=false) 字段并在没有 WordDelimiterFilterFactory 的情况下一起处理它。然后你搜索你的数据的两个副本,可能对不同的字段有不同的提升。