lucene搜索只处理小写字母

lucene搜索只处理小写字母,lucene,Lucene,我正在添加我的lucene文档,如下所示 final Document document = new Document(); document.add(new Field("login", user.getLogin(), Field.Store.YES, Field.Index.NO)); document.add(new Field("email", user.getEmail(), Field.Store.YES, Field.Index.ANALYZED)

我正在添加我的lucene文档,如下所示

final Document document = new Document();
        document.add(new Field("login", user.getLogin(), Field.Store.YES, Field.Index.NO));
        document.add(new Field("email", user.getEmail(), Field.Store.YES, Field.Index.ANALYZED));
        document.add(new Field("firstName", user.getFirstName(), Field.Store.YES, Field.Index.ANALYZED));
        document.add(new Field("lastName", user.getLastName(), Field.Store.YES, Field.Index.ANALYZED));
        userIndexWriter.addDocument(document);
final BooleanQuery booleanQuery = new BooleanQuery();

            final Query query1 = new PrefixQuery(new Term("email", prefix));
            final Query query2 = new PrefixQuery(new Term("firstName", prefix));
            final Query query3 = new PrefixQuery(new Term("lastName", prefix));

            booleanQuery.add(query1, BooleanClause.Occur.SHOULD);
            booleanQuery.add(query2, BooleanClause.Occur.SHOULD);
            booleanQuery.add(query3, BooleanClause.Occur.SHOULD);

            final SortField sortField = new SortField("firstName", SortField.STRING, true);
            final Sort sort = new Sort(sortField);

            final TopDocs topDocs = searcherManager .search(booleanQuery, DEFAULT_TOP_N_SEARCH_USER, sort);
因此,如果我用小写字母搜索,搜索是成功的,但是如果我用大写字母搜索,搜索将不返回任何结果

如果我遗漏了什么,有人有线索吗

analyzer = new StandardAnalyzer(Version.LUCENE_36);


                final IndexWriterConfig indexWriterConfig = new IndexWriterConfig(Version.LUCENE_36, analyzer);

                final IndexWriter indexWriter = new IndexWriter(directory, indexWriterConfig);
还有我的搜索经理

final SearcherManager searcherManager = new SearcherManager(indexWriter, true, null);
我正在像下面一样寻找

final Document document = new Document();
        document.add(new Field("login", user.getLogin(), Field.Store.YES, Field.Index.NO));
        document.add(new Field("email", user.getEmail(), Field.Store.YES, Field.Index.ANALYZED));
        document.add(new Field("firstName", user.getFirstName(), Field.Store.YES, Field.Index.ANALYZED));
        document.add(new Field("lastName", user.getLastName(), Field.Store.YES, Field.Index.ANALYZED));
        userIndexWriter.addDocument(document);
final BooleanQuery booleanQuery = new BooleanQuery();

            final Query query1 = new PrefixQuery(new Term("email", prefix));
            final Query query2 = new PrefixQuery(new Term("firstName", prefix));
            final Query query3 = new PrefixQuery(new Term("lastName", prefix));

            booleanQuery.add(query1, BooleanClause.Occur.SHOULD);
            booleanQuery.add(query2, BooleanClause.Occur.SHOULD);
            booleanQuery.add(query3, BooleanClause.Occur.SHOULD);

            final SortField sortField = new SortField("firstName", SortField.STRING, true);
            final Sort sort = new Sort(sortField);

            final TopDocs topDocs = searcherManager .search(booleanQuery, DEFAULT_TOP_N_SEARCH_USER, sort);

确保对文档和查询应用相同的分析。例如,如果将索引分析器设置为StandardAnalyzer,则还需要将其应用于查询,如下所示:

QueryParser queryParser = new QueryParser(Version.LUCENE_CURRENT, "firstName", new StandardAnalyzer(Version.LUCENE_CURRENT));
    try {
        Query q = queryParser.parse("Ameer");
    } catch (ParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

您需要使用QueryParser才能应用相同的分析。术语查询不应用任何分析。因此,小写字母将匹配,但大写字母将不匹配。谢谢。请添加您的评论作为答案,我将接受。我没有太多时间去测试,但资金问题似乎已经解决了。