Java lucene端口词干分析器不能与查询解析器一起使用

Java lucene端口词干分析器不能与查询解析器一起使用,java,lucene,Java,Lucene,我一直在尝试在lucene 6.2.0中使用端口词干分析器来表示单数和复数 我的代码如下 Builder q = new PhraseQuery.Builder(); PorterStemmer stemmer = new PorterStemmer(); for(String term : terms){ System.out.println("search term---"+term);

我一直在尝试在lucene 6.2.0中使用端口词干分析器来表示单数和复数 我的代码如下

         Builder q = new PhraseQuery.Builder();
         PorterStemmer stemmer = new PorterStemmer();
         for(String term : terms){
             System.out.println("search term---"+term);
            stemmer.setCurrent(term);
            String termss = stemmer.getCurrent();
             q.add(new Term("name",termss));
         }
         q.setSlop(terms.length * 0);
         Query r=  q.build();
         QueryParser parser = new QueryParser("name", analyzer);
         r=  parser.parse(QueryParser.escape(query));
因此,如果我搜索cats的话,词干词的结果是cat,这很好,但我仍然得到零命中率 但是如果我删除查询解析器,我会得到正确的答案
有谁能解释一下为什么会发生这种情况,以及我如何仍然可以使用port stemmer保留queryparser?

我对您的代码有点困惑。前10行构建一个查询,
r
,然后在最后一行中,根据一些以前未知的变量
query
,删除该查询并将其替换为QueryParser的输出。什么是
query
,前10行代码的意义是什么?顺便说一句,关于如何将词干分析器与QueryParser结合使用的直接答案是使用带有词干分析器的分析器<例如,code>EnglishAnalyzer。