Cet article est un article miroir de traduction automatique, veuillez cliquer ici pour accéder à l’article original.

Vue: 4068|Répondre: 2

[Source] [Combat pratique] Utilisez Lucene.Net + Jieba.NET pour construire une recherche légère sur place

[Copié le lien]
Publié le 29-10-2023 à 18:05:43 | | | |
Exigences : La recherche en texte intégral sur le site est une fonction couramment utilisée, et elle est couramment utilisée en fonction de celle-ciElasticSearchSolrDéploiement et développement, et maintenant deux nouveaux ont été publiésRedisSearchMeiliSearchLes moteurs de recherche, les deux premiers sont plus lourds, bien que les deux derniers ne soient pas aussi lourds que les deux premiers, mais doivent tout de même déployer des services dépendants, cet article utilise Lucene.Net + Jieba.NET pour construire une recherche sur site légère.

Lucene.Net

Lucene.Net est un portage .NET de Lucene et un kit de développement de moteur de recherche en texte intégral open source, c’est-à-dire qu’il ne s’agit pas d’un moteur de recherche en texte intégral, mais d’une architecture de moteur de recherche en texte intégral qui fournit un moteur de requête et un moteur d’indexation complets.

Site:La connexion hyperlientérée est visible.
Adresse GitHub :La connexion hyperlientérée est visible.

Jieba.NET

Jieba.NET est un participe chinois jieba. .NET version (implémentation C#). Il peut effectuer des fonctions telles que la segmentation des mots, l’annotation des parties du discours, l’extraction de mots-clés, etc. pour le texte chinois, et prend en charge des dictionnaires personnalisés.

Adresse GitHub :La connexion hyperlientérée est visible.

Tout d’abord, regardons les rendus :




Personnaliser l’analyseur

Analyzer, TokenStream, Tokenizer, TokenFilterTokenStream in Lucene TokenStream : Un flux obtenu après le traitement du tokenizer. Ce flux stocke diverses informations sur la segmentation des mots, qui peuvent être obtenues efficacement via TokenStream. Voici le processus de conversion du flux de fichiers en TokenStream : D’abord, utilisez le Tokenizer pour segmenter les mots, différents tokenizers ont des tokenziers différents, une fois le tokenzier séparé, filtrez les données qui ont été divisées en mots via le TokenFilter, comme les stop-mots. Après filtrage, combinez toutes les données dans un TokenStream.

Référence:

La connexion hyperlientérée est visible.
La connexion hyperlientérée est visible.
La connexion hyperlientérée est visible.


Pour personnaliser l’analyseur Lucène en fonction de Jieba.NET, la première référence est la suivante :



Référez-vous directement au paquet Lucene.Net.Analysis.Common, car Lucene.Net.Analysis.Common dépend du paquet Lucene.Net pour se télécharger automatiquement.

Créez un nouveau JiebaTokenizer.cs avec le code suivant :

Créez un nouveau JiebaAnalyzer.cs avec le code suivant :



Lucene.Net Créer de nouveaux documents et recherches

Ajoutez régulièrement ou déclenché des données d’un site web à Lucene, et Lucene stocke le document sur un disque physique via l’analyseur, puis appelle l’interface de recherche pour le trouver.

Le code de la classe d’aide LuceneHelper est le suivant :



Stockage de stockage

Store.OUI : Il ne se contente pas d’indexer les données, mais aussi de sauvegarder les données, afin que les résultats de recherche puissent restituer des informations sur les champs.
Store.NO : Seules les données seront indexées, et les données ne seront pas sauvegardées, et les résultats de recherche ne peuvent pas obtenir cette information de champ.Économise de l’espace disque

Comme montré ci-dessous :




Type de champ

Les types de champs dans Lucene.Net sont Int32Field, Int64Field, SingleField, DoubleField, BinaryDocValuesField, NumericDocValuesField, SortedDocValuesField, StringField, TextField, StoredField, Veuillez utiliser le type de données approprié selon votre situation.

TextField vs. StringField

TextField sera définitivement lexicalisé, StringField ne réalisera pas d’analyse lexicale du contenu stocké dans doc, voir :La connexion hyperlientérée est visible.

Recherche composée d’occurrence


Il existe 6 combinaisons des éléments suivants :

1. MUST et MUST : Obtenir l’intersection des clauses de requête consécutives.
2. MUST et MUST_NOT : Indique que les résultats de recherche de la clause de requête correspondant à la MUST_NOT ne peuvent pas être inclus dans les résultats de la requête.
3. SHOULD et MUST_NOT : Lorsqu’elle est utilisée en continu, la fonction est la même que MUST et MUST_NOT.
4. Lorsque SHOULD et MUST sont utilisés ensemble, le résultat est le résultat de recherche de la clause DOIT, mais SHOULD peut affecter le tri.
5. SHOULD et SHOULD : Indique la relation entre « ou », et le résultat final de recherche est l’union de toutes les clauses de recherche.
6.MUST_NOT et MUST_NOT : dénué de sens, récupération sans résultats.


Gérez le projet

À ce stade, vous pouvez commencer le projet pour ajouter, mettre à jour et rechercher le code de l’interface comme suit :


Les erreurs peuvent être signalées comme suit :

Une exception non prise en charge s’est produite lors du traitement de la demande.
DirectoryNotFoundException: Could not find a part of the path 'C:\Users\itsvse_nuc11\source\repos\DiscuzSearch\DiscuzSearch\bin\Debug\net6.0\Resources\prob_trans.json'.
Microsoft.Win32.SafeHandles.SafeFileHandle.CreateFile(chaîne fullPath, mode FileMode, accès aux fichiers, partage FileShare, options FileOptions)

TypeInitializationException: The type initializer for 'JiebaNet.Segmenter.JiebaSegmenter' threw an exception.

jieba.net Après l’installation, vous pouvez voir le répertoire Resources dans le répertoire packages\jieba.NET, qui contient le dictionnaire et d’autres fichiers de données nécessaires pour exécuter jieba.NET, et la méthode de configuration la plus simple consiste à copier l’intégralité du répertoire Resources dans le répertoire où se trouve l’assembleur, afin que les valeurs de configuration par défaut intégrées soient utilisées jieba.NET.

C:\Users\%USERPROFILE%\.nuget\packages\jieba.net\0.42.2\Resources

JiebaNet doit ajouter un dossier de configuration, dont le code est le suivant :

Le test a généré 500 nouveaux documents (liés à ma situation réelle, à titre de référence seulement), et le disque occupe 119 Ko, comme montré dans la figure ci-dessous :



(Fin)




Précédent:Suivez le compte officiel et obtenez gratuitement le « code d’invitation »
Prochain:.NET convertit la chaîne varbinaire de la base de données en un tableau byte[]
 Propriétaire| Publié le 29-10-2023 à 18:10:40 |
Elasticsearch (ES) ne parvient pas à écrire les données sur la solution de défaut
https://www.itsvse.com/thread-10568-1-1.html

Elasticsearch nettoie automatiquement les index pour libérer de l’espace disque
https://www.itsvse.com/thread-10273-1-1.html

Elasticsearch-7.x utilise xpack pour l’authentification de sécurité
https://www.itsvse.com/thread-10206-1-1.html

Déploie le service Elasticsearch en utilisant Docker
https://www.itsvse.com/thread-10148-1-1.html

Elasticsearch utilise elasticdump pour sauvegarder et migrer les données
https://www.itsvse.com/thread-10143-1-1.html

Installez la version autonome du tutoriel elasticsearch 7.10.2 sur Windows
https://www.itsvse.com/thread-9962-1-1.html

Introduction à la configuration des surlignages de recherche Elasticsearch
https://www.itsvse.com/thread-9562-1-1.html

.NET/C# Utilisez le débogage Elasticsearch pour consulter les informations de requêtes et de réponses
https://www.itsvse.com/thread-9561-1-1.html

ASP.NET Core Link Trace (5) données Jaeger persistent vers elasticsearch
https://www.itsvse.com/thread-9553-1-1.html

Elasticsearch (ES) réplique l’index clone
https://www.itsvse.com/thread-9545-1-1.html

État du cluster Elasticsearch(ES) : jaune (6 sur 7)
https://www.itsvse.com/thread-9544-1-1.html

Santé du cluster Elasticsearch(ES) : analyse de défaillance rouge
https://www.itsvse.com/thread-9543-1-1.html

Informations sur la géolocalisation Java dans ElasticSearch (geo_point)
https://www.itsvse.com/thread-6444-1-1.html

ElasticsearchParseException[champ doit être soit [lat], [lon] soit [geohash]]
https://www.itsvse.com/thread-6442-1-1.html

type elasticsearch-mappingfield
https://www.itsvse.com/thread-6436-1-1.html

Elasticsearch:No handler for type [string] declared on field[XX]的解决办法
https://www.itsvse.com/thread-6420-1-1.html

【Action pratique】Tutoriel d’installation Kibana pour Elasticsearch
https://www.itsvse.com/thread-6400-1-1.html

Coordonnées géogéographiques de la famille de fonctionnalités avancées Elasticsearch
https://www.itsvse.com/thread-6399-1-1.html

Les requêtes composées ElasticSearch doivent, doivent must_not utiliser
https://www.itsvse.com/thread-6334-1-1.html

Elasticsearch supprime et indexe toutes les données du document
https://www.itsvse.com/thread-6321-1-1.html

[Combat réel]. net/c# Appeler elasticsearch via NEST [avec code source]
https://www.itsvse.com/thread-6294-1-1.html

Causes et solutions pour unassigned_shards Elasticsearch à nœud unique
https://www.itsvse.com/thread-6193-1-1.html

Tutoriel sur l’installation d’elasticsearch-analysis-ik dans elasticsearch-6.5.2
https://www.itsvse.com/thread-6191-1-1.html

Installez le plugin elasticsearch-6.5.2 elasticsearch-head
https://www.itsvse.com/thread-6190-1-1.html

Tutoriel d’installation et de déploiement d’elasticsearch-6.5.2 de Centos 7
https://www.itsvse.com/thread-6173-1-1.html

Sélection des moteurs de recherche : Elasticsearch vs Solr
https://www.itsvse.com/thread-6168-1-1.html
 Propriétaire| Publié le 05-11-2023 à 21:27:45 |
Adresse de recherche du test :https://www.itsvse.com/blog_xzz.html
Démenti:
Tous les logiciels, supports de programmation ou articles publiés par Code Farmer Network sont uniquement destinés à l’apprentissage et à la recherche ; Le contenu ci-dessus ne doit pas être utilisé à des fins commerciales ou illégales, sinon les utilisateurs assumeront toutes les conséquences. Les informations sur ce site proviennent d’Internet, et les litiges de droits d’auteur n’ont rien à voir avec ce site. Vous devez supprimer complètement le contenu ci-dessus de votre ordinateur dans les 24 heures suivant le téléchargement. Si vous aimez le programme, merci de soutenir un logiciel authentique, d’acheter l’immatriculation et d’obtenir de meilleurs services authentiques. En cas d’infraction, veuillez nous contacter par e-mail.

Mail To:help@itsvse.com