How to match exact text in Lucene search?

后端 未结 3 1566
执笔经年
执笔经年 2021-01-06 16:33

Im trying to match a text Config migration from ASA5505 8.2 to ASA5516 in column TITLE.

My program looks like this.



        
3条回答
  •  旧巷少年郎
    2021-01-06 16:52

    Here is what i have written for you which works perfectly:

    USE: queryParser.parse("\"Config migration from ASA5505 8.2 to ASA5516\"");

    1. To create indexes

      public static void main(String[] args) 
      {
      
          IndexWriter writer = getIndexWriter();
          Document doc = new Document();
          Document doc1 = new Document();
          Document doc2 = new Document();
          doc.add(new Field("TITLE", "Config migration from ASA5505 8.2 to ASA5516",Field.Store.YES,Field.Index.ANALYZED));
          doc1.add(new Field("TITLE", "Firewall  migration from ASA5585 to ASA5555",Field.Store.YES,Field.Index.ANALYZED));
          doc2.add(new Field("TITLE", "Firewall  migration from ASA5585 to ASA5555",Field.Store.YES,Field.Index.ANALYZED));
          try 
          {
              writer.addDocument(doc);
              writer.addDocument(doc1);
              writer.addDocument(doc2);
              writer.close();
          } catch (IOException e) {
              // TODO Auto-generated catch block
              e.printStackTrace();
          }
      }
      
      public static IndexWriter getIndexWriter()
      {
          IndexWriter indexWriter=null;
      
          try 
          {
          File file=new File("D://index//");
          if(!file.exists())
              file.mkdir();
          IndexWriterConfig conf=new IndexWriterConfig(Version.LUCENE_34, new StandardAnalyzer(Version.LUCENE_34));
          Directory directory=FSDirectory.open(file);
          indexWriter=new IndexWriter(directory, conf);
          } catch (IOException e) {
              // TODO Auto-generated catch block
              e.printStackTrace();
          }
          return indexWriter;
      }
      

      }

    2.To search string

        public static void main(String[] args) 
        {
    
        IndexReader reader=getIndexReader();
    
        IndexSearcher searcher = new IndexSearcher(reader);
    
        QueryParser parser = new QueryParser(Version.LUCENE_34, "TITLE" ,new StandardAnalyzer(Version.LUCENE_34));
    
        Query query;
        try 
        {
        query = parser.parse("\"Config migration from ASA5505 8.2 to ASA5516\"");
    
        TopDocs hits = searcher.search(query,3);
    
        ScoreDoc[] document = hits.scoreDocs;
        int i=0;
        for(i=0;i

提交回复
热议问题