Acest articol este un articol oglindă al traducerii automate, vă rugăm să faceți clic aici pentru a sări la articolul original.

Vedere: 4068|Răspunde: 2

[Sursă] [Luptă practică] Folosește Lucene.Net + Jieba.NET pentru a construi o căutare ușoară la fața locului

[Copiază linkul]
Postat la 29-10-2023 18:05:43 | | | |
Cerințe: Căutarea full-text pe site este o funcție frecvent folosită și este folosită frecvent pe baza acesteiaElasticSearchSolrImplementare și dezvoltare, iar acum două noi au fost lansateRedisSearchMeiliSearchPrimele două sunt mai grele, deși ultimele două nu sunt la fel de grele ca primele două, dar tot trebuie să implementeze servicii dependente; acest articol folosește Lucene.Net + Jieba.NET pentru a construi o căutare ușoară la fața locului.

Lucene.Net

Lucene.Net este un port .NET al Lucene și este un kit open-source de dezvoltare pentru motoare de căutare full-text, adică nu este un motor de căutare full-text, ci o arhitectură de motor de căutare full-text care oferă un motor de interogare complet și un motor de indexare.

Site:Autentificarea cu hyperlink este vizibilă.
Adresă GitHub:Autentificarea cu hyperlink este vizibilă.

Jieba.NET

Jieba.NET este un participiu chinezesc jieba. versiunea .NET (implementare C#). Poate efectua funcții precum segmentarea cuvintelor, adnotarea părților de vorbire, extragerea cuvintelor cheie etc. pentru textul chinezesc și suportă dicționare personalizate.

Adresă GitHub:Autentificarea cu hyperlink este vizibilă.

Mai întâi, să aruncăm o privire asupra randărilor:




Personalizează analizorul

Analyzer, TokenStream, Tokenizer, TokenFilterTokenStream in Lucene TokenStream: Un flux obținut după ce tokenizerul a fost procesat. Acest flux stochează diverse informații despre segmentarea cuvintelor, care pot fi obținute eficient prin TokenStream. Următorul este procesul de conversie a fluxului de fișiere într-un TokenStream. Mai întâi, folosiți Tokenizer-ul pentru a segmenta cuvintele, diferiți tokenizatori au tokenzieri diferiți, după ce tokenzierul este separat, filtrați datele care au fost împărțite în cuvinte prin TokenFilter, cum ar fi cuvintele de oprire. După filtrare, combină toate datele într-un TokenStream.

Referință:

Autentificarea cu hyperlink este vizibilă.
Autentificarea cu hyperlink este vizibilă.
Autentificarea cu hyperlink este vizibilă.


Pentru a personaliza analizorul Lucene pe baza Jieba.NET, prima referință este următoarea:



Consultă direct pachetul Lucene.Net.Analysis.Common, deoarece Lucene.Net.Analysis.Common se bazează pe pachetul Lucene.Net pentru a se descărca automat.

Creează un nou JiebaTokenizer.cs cu următorul cod:

Creează un nou JiebaAnalyzer.cs cu următorul cod:



Lucene.Net Creează documente și căutări noi

Adaugă date de pe un site web în Lucene în mod regulat sau declanșat, iar Lucene stochează documentul pe un disc fizic prin analizator, apoi apelează interfața de căutare pentru a-l găsi.

Codul clasei de ajutor LuceneHelper este următorul:



Stocarea stocării

Store.YES: Nu doar că va indexa datele, dar le va și salva, astfel încât rezultatele căutării să poată returna informații despre câmpuri.
Store.NO: Doar datele vor fi indexate, datele nu vor fi salvate, iar rezultatele căutării nu pot obține aceste informații de câmp.Economisește spațiu pe disc

Așa cum se arată mai jos:




Tipul câmpului

Tipurile de câmpuri din Lucene.Net sunt Int32Field, Int64Field, SingleField, DoubleField, BinaryDocValuesField, NumericDocValuesField, SortedDocValuesField, StringField, TextField, StoredField, Vă rugăm să folosiți tipul de date corespunzător în funcție de situația dumneavoastră.

TextField vs. StringField

TextField va fi cu siguranță lexicalizat, StringField nu va efectua analize lexicale a conținutului stocat în document, consultați:Autentificarea cu hyperlink este vizibilă.

Căutare compusă care apare


Există 6 combinații ale următoarelor:

1. MUST și MUST: Obțineți intersecția clauzelor consecutive de interogare.
2. MUST și MUST_NOT: Indică faptul că rezultatele căutării clauzei de interogare corespunzătoare MUST_NOT nu pot fi incluse în rezultatele interogării.
3. SHOULD și MUST_NOT: Când este folosită continuu, funcția este aceeași cu MUST și MUST_NOT.
4. Când SHOULD și MUST sunt folosite împreună, rezultatul este rezultatul căutării clauzei MUST, dar SHOULD poate influența sortarea.
5. SHOULD și SHOULD: Indică relația dintre "sau", iar rezultatul final al căutării este uniunea tuturor clauzelor de căutare.
6.MUST_NOT și MUST_NOT: fără sens, recuperare fără rezultate.


Condu proiectul

În acest moment, poți începe proiectul pentru a adăuga, actualiza și căuta codul interfeței astfel:


Erorile pot fi raportate după cum urmează:

O excepție negestionată a avut loc în timpul procesării cererii.
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(stringuri fullPath, mod FileMode, acces FileAccess, share FileShare, opțiuni FileOptions)

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

jieba.net După instalare, poți vedea directorul Resurse în folderul package\jieba.NET, care conține dicționarul și alte fișiere de date necesare pentru rularea jieba.NET, iar cea mai simplă metodă de configurare este să copiezi întregul director Resurse în directorul unde se află asamblarea, astfel încât valorile implicite de configurație încorporate să fie folosite jieba.NET.

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

JiebaNet trebuie să adauge un folder de configurare, codul este următorul:

Testul a creat 500 de documente noi (legate de situația mea reală, doar pentru referință), iar discul ocupă 119KB, așa cum se vede în figura de mai jos:



(Sfârșit)




Precedent:Urmărește contul oficial și obține gratuit "codul de invitație"
Următor:.NET convertește șirul varbinar al bazei de date într-un tablou de octeți[]
 Proprietarul| Postat la 29-10-2023 18:10:40 |
Elasticsearch (ES) nu reușește să scrie date în soluția de defect
https://www.itsvse.com/thread-10568-1-1.html

Elasticsearch curăță automat indexurile pentru a elibera spațiu pe disc
https://www.itsvse.com/thread-10273-1-1.html

Elasticsearch-7.x folosește xpack pentru autentificare de securitate
https://www.itsvse.com/thread-10206-1-1.html

Implementarea serviciului Elasticsearch folosind Docker
https://www.itsvse.com/thread-10148-1-1.html

Elasticsearch folosește elasticdump pentru a face backup și a migra datele
https://www.itsvse.com/thread-10143-1-1.html

Instalează versiunea standalone a tutorialului elasticsearch 7.10.2 pe Windows
https://www.itsvse.com/thread-9962-1-1.html

Introducere în configurația evidențierii căutărilor Elasticsearch
https://www.itsvse.com/thread-9562-1-1.html

.NET/C# Folosiți depanarea Elasticsearch pentru a vizualiza informațiile despre cereri și răspunsuri
https://www.itsvse.com/thread-9561-1-1.html

ASP.NET Core Link Trace (5) Datele Jaeger persistă în elasticsearch
https://www.itsvse.com/thread-9553-1-1.html

Elasticsearch (ES) replică indicele clonă
https://www.itsvse.com/thread-9545-1-1.html

Sănătatea clusterului Elasticsearch(ES): stare galben (6 din 7)
https://www.itsvse.com/thread-9544-1-1.html

Sănătatea clusterului Elasticsearch(ES): analiza defecțiunii roșii
https://www.itsvse.com/thread-9543-1-1.html

Informații despre geolocalizarea Java în ElasticSearch (geo_point)
https://www.itsvse.com/thread-6444-1-1.html

ElasticsearchParseException[câmpul trebuie să fie fie [lat], [lon] sau [geohash]]
https://www.itsvse.com/thread-6442-1-1.html

Tipul 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

【Acțiune practică】Tutorial de instalare Kibana pentru Elasticsearch
https://www.itsvse.com/thread-6400-1-1.html

Coordonatele geogeografice ale familiei avansate de caracteristici Elasticsearch
https://www.itsvse.com/thread-6399-1-1.html

Interogările compuse ElasticSearch trebuie, ar trebui must_not folosite
https://www.itsvse.com/thread-6334-1-1.html

Elasticsearch șterge și indexează toate datele documentelor
https://www.itsvse.com/thread-6321-1-1.html

[Luptă propriu-zisă]. net/c# Apel elasticsearch search prin NEST [cu cod sursă]
https://www.itsvse.com/thread-6294-1-1.html

Cauze și soluții pentru unassigned_shards Elasticsearch cu un singur nod
https://www.itsvse.com/thread-6193-1-1.html

Tutorial despre instalarea elasticsearch-analysis-ik în elasticsearch-6.5.2
https://www.itsvse.com/thread-6191-1-1.html

Instalează pluginul elasticsearch-6.5.2 elasticsearch-head
https://www.itsvse.com/thread-6190-1-1.html

Tutorial de instalare și implementare Centos 7 elasticsearch-6.5.2
https://www.itsvse.com/thread-6173-1-1.html

Selecția motoarelor de căutare: Elasticsearch vs Solr
https://www.itsvse.com/thread-6168-1-1.html
 Proprietarul| Postat la 2023-11-5 21:27:45 |
Adresa de căutare a testului:https://www.itsvse.com/blog_xzz.html
Disclaimer:
Tot software-ul, materialele de programare sau articolele publicate de Code Farmer Network sunt destinate exclusiv scopurilor de învățare și cercetare; Conținutul de mai sus nu va fi folosit în scopuri comerciale sau ilegale, altfel utilizatorii vor suporta toate consecințele. Informațiile de pe acest site provin de pe Internet, iar disputele privind drepturile de autor nu au legătură cu acest site. Trebuie să ștergi complet conținutul de mai sus de pe calculatorul tău în termen de 24 de ore de la descărcare. Dacă îți place programul, te rugăm să susții software-ul autentic, să cumperi înregistrarea și să primești servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail.

Mail To:help@itsvse.com