V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
HiShan
V2EX  ›  问与答

Java 中 Lucene 7.2.1 版本 为什么使用 QueryParser 无法查询到数据,求大佬帮助小白 T _ T

  •  
  •   HiShan · Feb 12, 2018 · 1913 views
    This topic created in 3007 days ago, the information mentioned may be changed or developed.

    问代码:

    
        RAMDirectory dir = new RAMDirectory();
    
        public static IndexReader indexReader;
    
        public void createIndex() {
            try {
                Analyzer analyzer = new StandardAnalyzer(); //分词器(有简体中文分词器)
                IndexWriter indexWriter = new IndexWriter(dir, new IndexWriterConfig(analyzer));
                Document doc = new Document();
                Document doc1 = new Document();
                Document doc2 = new Document();
                Document doc3 = new Document();
                FieldType fieldType = new FieldType();
                fieldType.setStored(true);
                doc.add(new Field("bookName", "lucene1", fieldType));
                doc1.add(new Field("bookName", "lucene2", fieldType));
                doc2.add(new Field("bookName", "lucene3", fieldType));
                doc3.add(new Field("bookName", "lucene4", fieldType));
                indexWriter.addDocument(doc);
                indexWriter.addDocument(doc1);
                indexWriter.addDocument(doc2);
                indexWriter.addDocument(doc3);
                indexWriter.close();
    
                IndexReader reader = DirectoryReader.open(dir);
                for (int i = 0; i < reader.numDocs(); i++) {
                    System.out.println(reader.document(i).toString());
                }
    
                IndexSearcher searcher = new IndexSearcher(reader);
    
                QueryParser parser = new QueryParser("bookName", analyzer);
                Query query = parser.parse("lucene");
                TopDocs docs = searcher.search(query, 100);
                System.out.println("hit : " + docs.totalHits);
            } catch (IOException | ParseException e) {
                e.printStackTrace();
            }
        }
    
        public static void main(String[] args) {
            CreateRAMIndex s = new CreateRAMIndex();
            s.createIndex();
    
        }
    } ```
    
    但是为什么我使用其他的 Query 就可以比如 FuzzyQuery 就可以。网上资料都查看的差不多了,没什么作用,大部分都是好老的版本了。。Demo 也看了。都一样的啊 为什么我这个就查询不到一点东西呢?
    
    No Comments Yet
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   955 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 20:34 · PVG 04:34 · LAX 13:34 · JFK 16:34
    ♥ Do have faith in what you're doing.