基于StandardAnalyzer读写索引实例详解
前言
使用lucene创建索引时如果指定了解析器,则需要读写都使用这个解析器,目前我发现也就是在处理中文这块比较麻烦,像你在使用solr时如果配置了ik分词,则需要把index清空重新创建才能继续搜索。
本篇引用lucene-6.4.0和4.x的几个关键类会有不同的地方。
创建索引
1 public void index(){ 2 3 Directory dir=null; 4 Analyzer analyzer=null; 5 IndexWriterConfig config=null; 6 IndexWriter indexWriter=null; 7 try{ 8 /** 9 * SimpleFSDirectory 不能很好支持多线程操作10 * **/11 dir =new SimpleFSDirectory(Paths.get(INDEX_URL));12 13 analyzer=new StandardAnalyzer();14 config =new IndexWriterConfig(analyzer);15 /**16 * IndexWriter(Directory d,IndexWriterConfig config)17 * **/18 indexWriter =new IndexWriter(dir,config);19 20 indexWriter.deleteAll();21 List<UploadBook> books =bookDao.listAllBooks();22 Document document=null;23 24 SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");25 26 for(UploadBook book:books){27 document=new Document();28 document.add(new Field("id",book.getId().toString(), TextField.TYPE_STORED));29 document.add(new Field("ip",book.getIp(), TextField.TYPE_STORED));30 document.add(new Field("title",book.getOriginFileName(), TextField.TYPE_STORED));31 32 document.add(new Field("content", PdfReader.read(INDEX_PDF+book.getNewFileName()),TextField.TYPE_STORED));33 document.add(new Field("createtime",formatter.format(book.getCreateTime()), TextField.TYPE_STORED));34 35 indexWriter.addDocument(document);36 }37 38 indexWriter.commit();39 40 System.out.println("======索引创建完成,公创建"+books.size()+"条索引========");41 }catch (IOException ex){42 ex.printStackTrace();43 }44 catch(Exception ex){45 ex.printStackTrace();46 }finally {47 if(indexWriter !=null){48 try{49 indexWriter.close();50 }catch (IOException ex){51 System.out.println("======indexWriter close exception========");52 }53 }54 }55 56 }
读取索引
1 public static List<Book> search2(String kw){ 2 Directory dir=null; 3 Analyzer analyzer=null; 4 List<Book> list = new ArrayList<Book>(); 5 try{ 6 dir= FSDirectory.open(Paths.get("e:\\soso\\index")); 7 analyzer=new StandardAnalyzer(); 8 9 DirectoryReader reader =DirectoryReader.open(dir);10 IndexSearcher searcher=new IndexSearcher(reader);11 12 QueryParser parser=new QueryParser("content",analyzer);13 Query query =parser.parse(kw);14 15 ScoreDoc[] docs=searcher.search(query,100).scoreDocs;16 17 for (int i = 0; i < docs.length; i++) {18 Document firstHit = searcher.doc(docs[i].doc);19 20 Book book=new Book();21 book.setId(Integer.parseInt(firstHit.getField("id").stringValue()));22 book.setIp(firstHit.getField("ip").stringValue());23 24 String title=firstHit.getField("title").stringValue();25 title=title.substring(0,title.lastIndexOf("."));26 book.setTitle(title);27 28 String content=firstHit.getField("content").stringValue();29 if(content.length()>=500){30 content=content.substring(0,500)+"......";31 }32 book.setContent(content);33 34 SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-mm");35 Date date =format.parse(firstHit.getField("createtime").stringValue());36 book.setCreateTime(format.format(date));37 38 list.add(book);39 40 }41 42 }catch(Exception ex){43 44 }finally {45 try{46 dir.close();47 48 }catch(IOException ex){49 ex.printStackTrace();50 }51 }52 53 return list;54 }
Atas ialah kandungan terperinci 基于StandardAnalyzer读写索引实例详解. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Amalan PHP: Contoh Kod untuk Melaksanakan Jujukan Fibonacci dengan Pantas Jujukan Fibonacci ialah jujukan yang sangat menarik dan biasa dalam matematik Ia ditakrifkan seperti berikut: nombor pertama dan kedua ialah 0 dan 1, dan daripada yang ketiga Bermula dengan nombor, setiap nombor. ialah hasil tambah dua nombor sebelumnya. Beberapa nombor pertama dalam jujukan Fibonacci ialah 0,1,1.2,3,5,8,13,21,...dan seterusnya. Dalam PHP, kita boleh menjana jujukan Fibonacci melalui rekursi dan lelaran. Di bawah ini kami akan menunjukkan kedua-dua ini

Amalan Pembangunan Java: Mengintegrasikan Perkhidmatan Storan Awan Qiniu untuk Melaksanakan Muat Naik Fail Pengenalan Dengan pembangunan pengkomputeran awan dan storan awan, semakin banyak aplikasi perlu memuat naik fail ke awan untuk penyimpanan dan pengurusan. Kelebihan perkhidmatan storan awan ialah kebolehpercayaan yang tinggi, berskala dan fleksibiliti. Artikel ini akan memperkenalkan cara menggunakan pembangunan bahasa Java, menyepadukan perkhidmatan storan awan Qiniu dan melaksanakan fungsi muat naik fail. Mengenai Qiniu Cloud Qiniu Cloud ialah penyedia perkhidmatan storan awan terkemuka di China, menyediakan perkhidmatan storan awan dan pengedaran kandungan yang komprehensif. Pengguna boleh menggunakan Qiniu Yunti

Cara menggunakan PHP untuk melaksanakan fungsi caching data dan baca-tulis Caching ialah cara penting untuk meningkatkan prestasi sistem Melalui caching, data yang kerap digunakan boleh disimpan dalam memori untuk meningkatkan kelajuan membaca data. Dalam PHP, kita boleh menggunakan pelbagai kaedah untuk melaksanakan caching data dan fungsi baca dan tulis. Artikel ini akan memperkenalkan dua kaedah biasa: menggunakan cache fail dan menggunakan cache memori. 1. Gunakan caching fail. Caching fail menyimpan data dalam fail untuk bacaan seterusnya. Berikut ialah kod sampel yang menggunakan caching fail untuk membaca dan menulis data:

Artikel ini membawa anda pengetahuan yang berkaitan tentang uniapp merentas domain dan memperkenalkan isu yang berkaitan dengan subkontrak program uniapp dan mini Setiap program mini yang menggunakan subkontrak mesti mengandungi pakej utama. Pakej utama yang dipanggil ialah tempat halaman permulaan lalai/halaman TabBar, serta beberapa sumber awam/skrip JS yang perlu digunakan oleh semua subpakej manakala subpakej dibahagikan mengikut konfigurasi pembangun ia akan membantu semua orang.

Amalan reka bentuk jadual MySQL: Buat jadual pesanan e-dagang dan jadual semakan produk Dalam pangkalan data platform e-dagang, jadual pesanan dan jadual semakan produk adalah dua jadual yang sangat penting. Artikel ini akan memperkenalkan cara menggunakan MySQL untuk mereka bentuk dan mencipta kedua-dua jadual ini, dan memberikan contoh kod. 1. Reka bentuk dan penciptaan jadual pesanan Jadual pesanan digunakan untuk menyimpan maklumat pembelian pengguna, termasuk nombor pesanan, ID pengguna, ID produk, kuantiti pembelian, status pesanan dan medan lain. Pertama, kita perlu mencipta jadual bernama "pesanan" menggunakan CREATET

Fungsi eksport data adalah keperluan yang sangat biasa dalam pembangunan sebenar, terutamanya dalam senario seperti sistem pengurusan bahagian belakang atau eksport laporan data. Artikel ini akan mengambil bahasa Golang sebagai contoh untuk berkongsi kemahiran pelaksanaan fungsi eksport data dan memberikan contoh kod khusus. 1. Persediaan persekitaran Sebelum memulakan, pastikan anda telah memasang persekitaran Golang dan biasa dengan sintaks asas dan operasi Golang. Selain itu, untuk melaksanakan fungsi eksport data, anda mungkin perlu menggunakan perpustakaan pihak ketiga, seperti github.com/360EntSec

Kajian mendalam sintaks pertanyaan Elasticsearch dan pengenalan praktikal: Elasticsearch ialah enjin carian sumber terbuka berdasarkan Lucene Ia digunakan terutamanya untuk carian dan analisis yang diedarkan Ia digunakan secara meluas dalam carian teks penuh data berskala besar , sistem pengesyoran dan senario lain. Apabila menggunakan Elasticsearch untuk pertanyaan data, penggunaan fleksibel sintaks pertanyaan adalah kunci untuk meningkatkan kecekapan pertanyaan. Artikel ini akan menyelidiki sintaks pertanyaan Elasticsearch dan memberikannya berdasarkan kes sebenar.

Pertempuran Praktikal Vue: Pembangunan Komponen Pemilih Tarikh Pengenalan: Pemilih tarikh ialah komponen yang sering digunakan dalam pembangunan harian Ia boleh memilih tarikh dengan mudah dan menyediakan pelbagai pilihan konfigurasi. Artikel ini akan memperkenalkan cara menggunakan rangka kerja Vue untuk membangunkan komponen pemilih tarikh yang mudah dan menyediakan contoh kod khusus. 1. Analisis keperluan Sebelum memulakan pembangunan, kita perlu menjalankan analisis keperluan untuk menjelaskan fungsi dan ciri-ciri komponen. Menurut fungsi komponen pemilih tarikh biasa, kita perlu melaksanakan titik fungsi berikut: Fungsi asas: dapat memilih tarikh, dan
