如何跳过StopFilter获取单字值

时间:2016-03-05 11:25:47

标签: java lucene

我想创建自己的分析器,但只对多字值应用StopFilter,仍然使用单字值(停用词本身)索引停用词

new Analyzer() {
            protected Analyzer.TokenStreamComponents createComponents(String fieldName) {
                final StandardTokenizer src = new StandardTokenizer();
                TokenStream tok = new StandardFilter(src);
                tok = new LowerCaseFilter(tok);
                tok = new StopFilter(tok, StandardAnalyzer.STOP_WORDS_SET);
                return new Analyzer.TokenStreamComponents(src, tok);
            }
        }

示例,我有2个值:

1. this
2. this table
3. table

使用上面的Analyzer,查询字符串是"这个",没有找到结果。但我希望使用该查询,结果应包含值1(),而不包含值2(此表

2 个答案:

答案 0 :(得分:0)

你可以试试这个:

...
final StandardTokenizer src = new StandardTokenizer();
src.setReader(new StringReader("this table")); 
...

答案 1 :(得分:0)

没有选项,你需要建立自己的StopFilter。