Questo articolo è un articolo speculare di traduzione automatica, clicca qui per saltare all'articolo originale.

Vista: 4068|Risposta: 2

[Fonte] [Combattimento pratico] Usa Lucene.Net + Jieba.NET per costruire una ricerca in loco leggera

[Copiato link]
Pubblicato il 29-10-2023 18:05:43 | | | |
Requisiti: La ricerca in testo completo sul sito è una funzione comunemente usata ed è comunemente utilizzata in base ad essaElasticSearchSolrDistribuzione e sviluppo, e ora ne sono stati rilasciati due nuoviRedisSearchMeiliSearchI primi due sono più pesanti, anche se gli ultimi due non sono pesanti quanto i primi due, ma devono comunque distribuire servizi dipendenti; questo articolo utilizza Lucene.Net + Jieba.NET per costruire una ricerca on-site leggera.

Lucene.Net

Lucene.Net è un porting .NET di Lucene ed è un kit open source per lo sviluppo di motori di ricerca full-text, cioè non è un motore di ricerca full-text, ma un'architettura di motore di ricerca full-text che fornisce un motore di query completo e un motore di indicizzazione.

Sito:Il login del link ipertestuale è visibile.
Indirizzo GitHub:Il login del link ipertestuale è visibile.

Jieba.NET

Jieba.NET è un participio cinese jieba. Versione .NET (implementazione C#). Può svolgere funzioni come segmentazione delle parole, annotazione delle parti del discorso, estrazione di parole chiave, ecc. per testi cinesi, e supporta dizionari personalizzati.

Indirizzo GitHub:Il login del link ipertestuale è visibile.

Per prima cosa, diamo un'occhiata ai rendering:




Personalizza l'analizzatore

Analyzer, TokenStream, Tokenizer, TokenFilterTokenStream in Lucene TokenStream: Un flusso ottenuto dopo che il tokenizer è stato elaborato. Questo flusso memorizza varie informazioni sulla segmentazione delle parole, che possono essere ottenute efficacemente tramite TokenStream. Di seguito è il processo di conversione del file stream in un TokenStream: Prima si usano il Tokenizer per segmentare le parole, i diversi tokenizer hanno tokenzier differenti; dopo che il tokenzier è stato separato, filtra i dati suddivisi in parole tramite il TokenFilter, come le parole di stop. Dopo aver filtrato, combina tutti i dati in un TokenStream.

Riferimento:

Il login del link ipertestuale è visibile.
Il login del link ipertestuale è visibile.
Il login del link ipertestuale è visibile.


Per personalizzare l'analizzatore Lucene in base a Jieba.NET, il primo riferimento è il seguente:



Fai riferimento direttamente al pacchetto Lucene.Net.Analysis.Common, poiché Lucene.Net.Analysis.Common si basa sul pacchetto Lucene.Net per scaricarsi automaticamente.

Crea un nuovo JiebaTokenizer.cs con il seguente codice:

Crea un nuovo JiebaAnalyzer.cs con il seguente codice:



Lucene.Net Creare nuovi documenti e ricerche

Aggiungi dati da un sito web a Lucene regolarmente o attivati, e Lucene memorizza il documento su un disco fisico tramite l'analizzatore e poi chiama l'interfaccia di ricerca per trovarlo.

Il codice della classe di aiuto LuceneHelper è il seguente:



Memorizza la memoria

Store.YES: Non solo indicizzerà i dati, ma li salverà anche, così che i risultati della ricerca possano restituire informazioni sul campo.
Store.NO: Solo i dati saranno indicizzati, i dati non saranno salvati e i risultati della ricerca non potranno ottenere queste informazioni sul campo.Risparmia spazio su disco

Come mostrato di seguito:




Tipo di campo di campo

I tipi di campo in Lucene.Net sono Int32Field, Int64Field, SingleField, DoubleField, BinaryDocValuesField, NumericDocValuesField, SortedDocValuesField, StringField, TextField, StoredField, Si prega di utilizzare il tipo di dato appropriato in base alla tua situazione.

TextField vs. StringField

TextField sarà sicuramente lessicato, StringField non eseguirà analisi lessicale dei contenuti memorizzati in doc, si veda:Il login del link ipertestuale è visibile.

Ricerca composta di avvenimenti


Ci sono 6 combinazioni dei seguenti:

1. MUST e MUST: Ottenere l'intersezione delle clausole di query consecutive.
2. MUST e MUST_NOT: Indica che i risultati della ricerca della clausola di query corrispondente al MUST_NOT non possono essere inclusi nei risultati della query.
3. SHOULD e MUST_NOT: Quando usate continuamente, la funzione è la stessa di MUST e MUST_NOT.
4. Quando SHOULD e MUST vengono usati insieme, il risultato è il risultato di ricerca della clausola MUST, ma SHOULD può influenzare l'ordinamento.
5. SHOULD e SHOULD: Indica la relazione tra "oppure", e il risultato finale della ricerca è l'unione di tutte le clausole di ricerca.
6.MUST_NOT e MUST_NOT: privo di significato, prelievo senza risultati.


Gestisci il progetto

A questo punto, puoi avviare il progetto per aggiungere, aggiornare e cercare il codice dell'interfaccia come segue:


Gli errori possono essere segnalati come segue:

Durante l'elaborazione della richiesta si è verificata un'eccezione non gestita.
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(stringa fullPath, modalità FileMode, accesso FileAccess, condivisione FileShare, opzioni FileOptions)

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

jieba.net Dopo l'installazione, puoi vedere la directory Resources nella cartella package\jieba.NET, che contiene il dizionario e altri file di dati necessari per eseguire jieba.NET, e il metodo di configurazione più semplice è copiare l'intera directory Resources nella directory dove si trova l'assembly, così che i valori di configurazione predefiniti integrati vengano utilizzati jieba.NET.

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

JiebaNet deve aggiungere una cartella di configurazione, il codice è il seguente:

Il test ha creato 500 nuovi documenti (relativi alla mia situazione reale, solo per riferimento), e il disco occupa 119KB, come mostrato nella figura sottostante:



(Fine)




Precedente:Segui l'account ufficiale e ottieni gratuitamente il "codice invito"
Prossimo:.NET converte la stringa varbinary del database in un array di byte[]
 Padrone di casa| Pubblicato il 29-10-2023 18:10:40 |
Elasticsearch (ES) non riesce a scrivere i dati nella soluzione del guasto
https://www.itsvse.com/thread-10568-1-1.html

Elasticsearch elimina automaticamente gli indici per liberare spazio su disco
https://www.itsvse.com/thread-10273-1-1.html

Elasticsearch-7.x utilizza xpack per l'autenticazione di sicurezza
https://www.itsvse.com/thread-10206-1-1.html

Distribuisci il servizio Elasticsearch usando Docker
https://www.itsvse.com/thread-10148-1-1.html

Elasticsearch utilizza elasticdump per fare il backup e migrare i dati
https://www.itsvse.com/thread-10143-1-1.html

Installa la versione standalone del tutorial elasticsearch 7.10.2 su Windows
https://www.itsvse.com/thread-9962-1-1.html

Introduzione alla configurazione delle evidenziazioni di ricerca di Elasticsearch
https://www.itsvse.com/thread-9562-1-1.html

.NET/C# Usa il debug di Elasticsearch per visualizzare le informazioni di richieste e risposte
https://www.itsvse.com/thread-9561-1-1.html

ASP.NET Core Link Trace (5) I dati Jaeger persistono su elasticsearch
https://www.itsvse.com/thread-9553-1-1.html

Elasticsearch (ES) replica l'indice clone
https://www.itsvse.com/thread-9545-1-1.html

Salute del cluster Elasticsearch(ES): stato giallo (6 su 7)
https://www.itsvse.com/thread-9544-1-1.html

Salute del cluster Elasticsearch(ES): analisi di guasto rosso
https://www.itsvse.com/thread-9543-1-1.html

Informazioni sulla geolocalizzazione di Java in ElasticSearch (geo_point)
https://www.itsvse.com/thread-6444-1-1.html

ElasticsearchParseException[il campo deve essere [lat], [lon] o [geohash]]
https://www.itsvse.com/thread-6442-1-1.html

Tipo 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

【Azione Pratica】Tutorial di installazione Kibana per Elasticsearch
https://www.itsvse.com/thread-6400-1-1.html

Coordinate geogeografiche della famiglia di caratteristiche avanzate Elasticsearch
https://www.itsvse.com/thread-6399-1-1.html

Le query composte di ElasticSearch devono, dovrebbero, must_not usare
https://www.itsvse.com/thread-6334-1-1.html

Elasticsearch elimina e indicizza tutti i dati del documento
https://www.itsvse.com/thread-6321-1-1.html

[Combattimento vero e proprio]. net/c# Chiama elasticsearch search tramite NEST [con codice sorgente]
https://www.itsvse.com/thread-6294-1-1.html

Cause e soluzioni per unassigned_shards Elasticsearch a nodo singolo
https://www.itsvse.com/thread-6193-1-1.html

Tutorial su come installare elasticsearch-analysis-ik in elasticsearch-6.5.2
https://www.itsvse.com/thread-6191-1-1.html

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

Tutorial di installazione e distribuzione di Centos 7 elasticsearch-6.5.2
https://www.itsvse.com/thread-6173-1-1.html

Selezione dei motori di ricerca: Elasticsearch vs Solr
https://www.itsvse.com/thread-6168-1-1.html
 Padrone di casa| Pubblicato il 5-11-2023 21:27:45 |
Cerca indirizzo del test:https://www.itsvse.com/blog_xzz.html
Disconoscimento:
Tutto il software, i materiali di programmazione o gli articoli pubblicati dalla Code Farmer Network sono destinati esclusivamente all'apprendimento e alla ricerca; I contenuti sopra elencati non devono essere utilizzati per scopi commerciali o illegali, altrimenti gli utenti dovranno sostenere tutte le conseguenze. Le informazioni su questo sito provengono da Internet, e le controversie sul copyright non hanno nulla a che fare con questo sito. Devi eliminare completamente i contenuti sopra elencati dal tuo computer entro 24 ore dal download. Se ti piace il programma, ti preghiamo di supportare software autentico, acquistare la registrazione e ottenere servizi autentici migliori. In caso di violazione, vi preghiamo di contattarci via email.

Mail To:help@itsvse.com