Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 4068|Atsakyti: 2

[Šaltinis] [Praktinė kova] Naudokite Lucene.Net + Jieba.NET, kad sukurtumėte lengvą paiešką svetainėje

[Kopijuoti nuorodą]
Publikuota: 2023-10-29 18:05:43 | | | |
Reikalavimai: Viso teksto paieška svetainėje yra dažniausiai naudojama funkcija ir dažniausiai naudojama pagal jąElastinė paieškaSolrDiegimas ir plėtra, o dabar buvo išleisti du naujiIeškoti iš naujoMeiliSearchPaieškos sistema, pirmieji du yra sunkesni, nors paskutiniai du nėra tokie sunkūs kaip pirmieji du, tačiau vis tiek reikia diegti priklausomas paslaugas, šiame straipsnyje naudojama Lucene.Net + Jieba.NET, kad būtų sukurta lengva paieška vietoje.

Lucene.Net

Lucene.Net yra "Lucene" .NET prievadas ir yra atvirojo kodo viso teksto paieškos sistemų kūrimo rinkinys, t. y. tai nėra viso teksto paieškos sistema, o viso teksto paieškos sistemos architektūra, teikianti visą užklausų variklį ir indeksavimo variklį.

Svetainė:Hipersaito prisijungimas matomas.
"GitHub" adresas:Hipersaito prisijungimas matomas.

Jieba.NET

Jieba.NET yra dalyvis kinų jieba. .NET versija (C# diegimas). Jis gali atlikti tokias funkcijas kaip žodžių segmentavimas, kalbos dalies anotacija, raktinių žodžių ištraukimas ir kt. kinų tekstui ir palaiko pasirinktinius žodynus.

"GitHub" adresas:Hipersaito prisijungimas matomas.

Pirmiausia pažvelkime į atvaizdus:




Tinkinkite analizatorių

Analizatorius, TokenStream, Tokenizer, TokenFilterTokenStream Lucene TokenStream: srautas, gaunamas apdorojus tokenizatorių. Šiame sraute saugoma įvairi informacija apie žodžių segmentavimą, kurią galima efektyviai gauti naudojant TokenStream. Toliau pateikiamas failų srauto konvertavimo į "TokenStream" procesas Pirmiausia naudokite "Tokenizer", kad segmentuotumėte žodžius, skirtingi tokenizatoriai turi skirtingus žetonus, atskyrę žetoną, filtruokite duomenis, kurie buvo suskirstyti į žodžius per "TokenFilter", pvz., stabdymo žodžius. Po filtravimo sujunkite visus duomenis į TokenStream.

Nuoroda:

Hipersaito prisijungimas matomas.
Hipersaito prisijungimas matomas.
Hipersaito prisijungimas matomas.


Norėdami pritaikyti "Lucene" analizatorių pagal Jieba.NET, pirmoji nuoroda yra tokia:



Kreipkitės tiesiai į Lucene.Net.Analysis.Common paketą, nes Lucene.Net.Analysis.Common automatiškai atsisiunčiamas nuo Lucene.Net paketo.

Sukurkite naują JiebaTokenizer.cs naudodami šį kodą:

Sukurkite naują JiebaAnalyzer.cs naudodami šį kodą:



Lucene.Net Kurti naujus dokumentus ir ieškoti

Reguliariai arba suaktyvinus įtraukite duomenis iš svetainės į Lucene, o Lucene išsaugo dokumentą fiziniame diske per analizatorių, o tada iškviečia paieškos sąsają, kad jį rastų.

LuceneHelper pagalbos klasės kodas yra toks:



Parduotuvės saugykla

Store.YES: Jis ne tik indeksuos duomenis, bet ir išsaugos duomenis, kad paieškos rezultatai galėtų grąžinti lauko informaciją.
Store.NO: Bus indeksuojami tik duomenys, duomenys nebus įrašyti, o ieškos rezultatai negalės gauti šios lauko informacijos.Taupo vietą diske

Kaip parodyta žemiau:




Lauko lauko tipas

Lucene.Net laukų tipai yra Int32Field, Int64Field, SingleField, DoubleField, BinaryDocValuesField, NumericDocValuesField, SortedDocValuesField, StringField, TextField, StoredField, Naudokite atitinkamą duomenų tipą pagal savo situaciją.

TextField ir StringField

TextField tikrai bus leksikalizuotas, StringField neatliks doc saugomo turinio leksinės analizės, žr.:Hipersaito prisijungimas matomas.

Įvyksta sudėtinė paieška


Yra 6 šių derinių:

1. TURI ir PRIVALO: gaukite nuoseklių užklausų sąlygų sankirtą.
2. MUST ir MUST_NOT: nurodo, kad užklausos sąlygos, atitinkančios MUST_NOT, paieškos rezultatų negalima įtraukti į užklausos rezultatus.
3.SHOULD ir MUST_NOT: Naudojant nuolat, funkcija yra tokia pati kaip MUST ir MUST_NOT.
4. Kai SHOULD ir MUST naudojami kartu, gaunamas sąlygos MUST paieškos rezultatas, tačiau SHOULD gali turėti įtakos rūšiavimui.
5. TURĖTŲ ir TURĖTŲ: nurodo ryšį tarp "arba", o galutinis paieškos rezultatas yra visų paieškos sąlygų sąjunga.
6.MUST_NOT ir MUST_NOT: beprasmis, susigrąžinimas be rezultatų.


Vykdyti projektą

Šiuo metu galite pradėti projektą, kad pridėtumėte, atnaujintumėte ir ieškotumėte sąsajos kodo taip:


Apie klaidas galima pranešti taip:

Apdorojant užklausą įvyko neapdorota išimtis.
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(eilutė fullPath, FileMode režimas, FileAccess prieiga, FileShare bendrinimas, FileOptions parinktys)

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

jieba.net Įdiegę katalogą Ištekliai galite pamatyti katalogą paketai\jieba.NET kuriame yra žodynas ir kiti duomenų failai, reikalingi jieba.NET paleisti, o paprasčiausias konfigūravimo būdas yra nukopijuoti visą išteklių katalogą į katalogą, kuriame yra rinkinys, kad įtaisytosios numatytosios konfigūracijos reikšmės būtų naudojamos jieba.NET.

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

"JiebaNet" reikia pridėti konfigūracijos aplanką, kodas yra toks:

Testas sukūrė 500 naujų dokumentų (susijusių su mano faktine situacija, tik nuoroda), o diskas užima 119 KB, kaip parodyta paveikslėlyje žemiau:



(Pabaiga)




Ankstesnis:Sekite oficialią paskyrą ir gaukite "kvietimo kodą" nemokamai
Kitą:.NET konvertuoja duomenų bazės varbinary eilutę į baitą[] masyvą
 Savininkas| Publikuota: 2023-10-29 18:10:40 |
"Elasticsearch" (ES) nepavyksta įrašyti duomenų į gedimo sprendimą
https://www.itsvse.com/thread-10568-1-1.html

"Elasticsearch" automatiškai išvalo indeksus, kad atlaisvintų vietos diske
https://www.itsvse.com/thread-10273-1-1.html

"Elasticsearch-7.x" naudoja "xpack" saugos autentifikavimui
https://www.itsvse.com/thread-10206-1-1.html

"Elasticsearch" paslaugos diegimas naudojant "Docker"
https://www.itsvse.com/thread-10148-1-1.html

"Elasticsearch" naudoja "elasticdump" atsarginėms duomenų kopijoms kurti ir perkelti
https://www.itsvse.com/thread-10143-1-1.html

Įdiekite atskirą "ElasticSearch 7.10.2" mokymo programos versiją sistemoje "Windows".
https://www.itsvse.com/thread-9962-1-1.html

Įvadas į "Elasticsearch" paieškos paryškinimų konfigūraciją
https://www.itsvse.com/thread-9562-1-1.html

.NET/C# Naudokite "Elasticsearch" derinimą, kad peržiūrėtumėte užklausos ir atsakymo informaciją
https://www.itsvse.com/thread-9561-1-1.html

ASP.NET Core Link Trace (5) Jaeger duomenys išlieka elasticsearch
https://www.itsvse.com/thread-9553-1-1.html

"Elasticsearch" (ES) atkartoja klonų indeksą
https://www.itsvse.com/thread-9545-1-1.html

"Elasticsearch" (ES) klasterio būklė: geltona (6 iš 7) būsena
https://www.itsvse.com/thread-9544-1-1.html

"Elasticsearch" (ES) klasterio būklė: raudona Gedimų analizė
https://www.itsvse.com/thread-9543-1-1.html

"Java" geografinės vietos nustatymo informacija "ElasticSearch" (geo_point)
https://www.itsvse.com/thread-6444-1-1.html

ElasticsearchParseException[laukas turi būti [lat], [lon] arba [geohash]]
https://www.itsvse.com/thread-6442-1-1.html

elasticsearch-mappingfield tipas
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

【Praktinis veiksmas】 "Kibana" diegimo pamoka, skirta "Elasticsearch"
https://www.itsvse.com/thread-6400-1-1.html

"Elasticsearch" išplėstinių funkcijų šeimos geografinės geografinės koordinatės
https://www.itsvse.com/thread-6399-1-1.html

"ElasticSearch" sudėtinės užklausos turi, turėtų must_not naudoti
https://www.itsvse.com/thread-6334-1-1.html

"Elasticsearch" ištrina ir indeksuoja visus dokumento duomenis
https://www.itsvse.com/thread-6321-1-1.html

[Tikroji kova]. net/c# Skambinti elasticsearch paieška per NEST [su šaltinio kodu]
https://www.itsvse.com/thread-6294-1-1.html

Vieno mazgo "Elasticsearch unassigned_shards priežastys ir sprendimai
https://www.itsvse.com/thread-6193-1-1.html

Elasticsearch-analysis-ik diegimo elasticsearch-6.5.2 pamoka
https://www.itsvse.com/thread-6191-1-1.html

Įdiekite elasticsearch-6.5.2 elasticsearch-head įskiepį
https://www.itsvse.com/thread-6190-1-1.html

"Centos 7" diegimo ir diegimo "Elasticsearch-6.5.2" pamoka
https://www.itsvse.com/thread-6173-1-1.html

Paieškos sistemos pasirinkimas: Elasticsearch vs Solr
https://www.itsvse.com/thread-6168-1-1.html
 Savininkas| Publikuota: 2023-11-5 21:27:45 |
Ieškoti testo adreso:https://www.itsvse.com/blog_xzz.html
Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com