


Explication détaillée des exemples d'index de lecture et d'écriture basés sur 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 }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Pratique PHP : Exemple de code pour implémenter rapidement la séquence de Fibonacci La séquence de Fibonacci est une séquence très intéressante et courante en mathématiques. Elle est définie comme suit : le premier et le deuxième nombres sont 0 et 1, et à partir du troisième, en commençant par les nombres, chaque nombre. est la somme des deux nombres précédents. Les premiers nombres de la séquence de Fibonacci sont 0,1,1,2,3,5,8,13,21,... et ainsi de suite. En PHP, nous pouvons générer la séquence de Fibonacci par récursion et itération. Ci-dessous, nous montrerons ces deux

Pratique de développement Java : intégration du service de stockage cloud Qiniu pour implémenter le téléchargement de fichiers Introduction Avec le développement du cloud computing et du stockage cloud, de plus en plus d'applications doivent télécharger des fichiers vers le cloud à des fins de stockage et de gestion. Les avantages des services de stockage cloud sont une fiabilité, une évolutivité et une flexibilité élevées. Cet article expliquera comment utiliser le développement du langage Java, intégrer le service de stockage cloud Qiniu et implémenter la fonction de téléchargement de fichiers. À propos de Qiniu Cloud Qiniu Cloud est l'un des principaux fournisseurs de services de stockage cloud en Chine, fournissant des services complets de stockage cloud et de distribution de contenu. Les utilisateurs peuvent utiliser Qiniu Yunti

Comment utiliser PHP pour implémenter des fonctions de mise en cache de données et de lecture-écriture. Grâce à la mise en cache, les données fréquemment utilisées peuvent être stockées en mémoire pour augmenter la vitesse de lecture des données. En PHP, nous pouvons utiliser diverses méthodes pour implémenter des fonctions de mise en cache et de lecture et d’écriture des données. Cet article présentera deux méthodes courantes : l'utilisation de la mise en cache de fichiers et l'utilisation de la mise en cache de mémoire. 1. Utilisez la mise en cache de fichiers. La mise en cache de fichiers stocke les données dans des fichiers pour une lecture ultérieure. Voici un exemple de code qui utilise la mise en cache de fichiers pour lire et écrire des données :

Pratique de conception de tables MySQL : créez une table de commande de commerce électronique et une table d'évaluation des produits dans la base de données de la plateforme de commerce électronique, la table de commande et la table d'évaluation des produits sont deux tables très importantes. Cet article expliquera comment utiliser MySQL pour concevoir et créer ces deux tables, et donnera des exemples de code. 1. Conception et création du tableau des commandes Le tableau des commandes est utilisé pour stocker les informations d'achat de l'utilisateur, y compris le numéro de commande, l'ID utilisateur, l'ID produit, la quantité achetée, le statut de la commande et d'autres champs. Tout d'abord, nous devons créer une table nommée "order" en utilisant CREATET

Cet article vous apporte des connaissances pertinentes sur le multi-domaine Uniapp et présente les problèmes liés à la sous-traitance des programmes Uniapp et Mini. Chaque mini-programme qui utilise la sous-traitance doit contenir un package principal. Le soi-disant package principal est l'endroit où est placée la page de démarrage/la page TabBar par défaut, ainsi que certaines ressources publiques/scripts JS que tous les sous-packages doivent utiliser, tandis que les sous-packages sont divisés en fonction de la configuration du développeur, j'espère. cela sera utile à tout le monde.

La fonction d'exportation de données est une exigence très courante dans le développement réel, en particulier dans des scénarios tels que les systèmes de gestion back-end ou l'exportation de rapports de données. Cet article prendra le langage Golang comme exemple pour partager les compétences d'implémentation de la fonction d'exportation de données et donnera des exemples de code spécifiques. 1. Préparation de l'environnement Avant de commencer, assurez-vous d'avoir installé l'environnement Golang et de connaître la syntaxe et les opérations de base de Golang. De plus, afin d'implémenter la fonction d'exportation de données, vous devrez peut-être utiliser une bibliothèque tierce, telle que github.com/360EntSec.

Étude approfondie de la syntaxe des requêtes Elasticsearch et introduction pratique : Elasticsearch est un moteur de recherche open source basé sur Lucene. Il est principalement utilisé pour la recherche et l'analyse distribuées. Il est largement utilisé dans la recherche en texte intégral de données à grande échelle et l'analyse de journaux. , systèmes de recommandation et autres scénarios. Lorsque vous utilisez Elasticsearch pour les requêtes de données, l'utilisation flexible de la syntaxe des requêtes est la clé pour améliorer l'efficacité des requêtes. Cet article approfondira la syntaxe des requêtes Elasticsearch et la présentera sur la base de cas réels.

Vue Practical Combat : Développement de composants de sélecteur de dates Introduction : Le sélecteur de dates est un composant souvent utilisé dans le développement quotidien. Il peut facilement sélectionner des dates et fournit diverses options de configuration. Cet article expliquera comment utiliser le framework Vue pour développer un composant de sélecteur de date simple et fournira des exemples de code spécifiques. 1. Analyse des besoins Avant de commencer le développement, nous devons effectuer une analyse des besoins pour clarifier les fonctions et les caractéristiques des composants. Selon les fonctions communes des composants du sélecteur de date, nous devons implémenter les points de fonction suivants : Fonctions de base : capables de sélectionner des dates et
