Nõuded: Täisteksti otsing saidil on levinud funktsioon ja seda kasutatakse sageli selle põhjalElasticSearch、SolrJuurutamine ja arendus ning nüüd on välja antud kaks uutRedisSearch、MeiliSearchOtsingumootoris, esimesed kaks on raskemad, kuigi viimased kaks pole nii rasked kui esimesed, kuid vajavad siiski sõltuvaid teenuseid; see artikkel kasutab Lucene.Net + Jieba.NET, et luua kerge kohapealne otsing.
Lucene.Net
Lucene.Net on Lucene .NET port ja avatud lähtekoodiga täisteksti otsingumootori arenduskomplekt, st see ei ole täistekst otsingumootor, vaid täisteksti otsingumootori arhitektuur, mis pakub täielikku päringu- ja indekseerimismootorit.
Sait:Hüperlingi sisselogimine on nähtav. GitHubi aadress:Hüperlingi sisselogimine on nähtav.
Jieba.NET
Jieba.NET on partitsiip hiina jieba. .NET versioon (C# rakendus). See suudab täita funktsioone nagu sõnade segmenteerimine, kõneosade annotatsioon, märksõnade eraldamine jms hiina teksti jaoks ning toetab kohandatud sõnastikke.
GitHubi aadress:Hüperlingi sisselogimine on nähtav.
Esmalt vaatame renderdusi:
Kohanda analüsaatorit
Analyzer, TokenStream, Tokenizer, TokenFilterTokenStream in Lucene TokenStream: Voog, mis saadakse pärast tokenizaatori töötlemist. See voog salvestab mitmesugust teavet sõnade segmenteerimise kohta, mida saab tõhusalt hankida TokenStreami kaudu. Järgmine on protsess, kuidas failivoo TokenStreamiks teisendada Esmalt kasutage tokenizerit sõnade segmenteerimiseks, erinevatel tokeniseerijatel on erinevad tokenzierid, pärast tokenzieri eraldamist filtreerige TokenFilteri kaudu sõnadeks jagatud andmed, näiteks stop-sõnad. Pärast filtreerimist ühenda kogu info TokenStreami.
Viide:
Hüperlingi sisselogimine on nähtav.
Hüperlingi sisselogimine on nähtav.
Hüperlingi sisselogimine on nähtav.
Lucene analüsaatori kohandamiseks Jieba.NET alusel on esimene viide järgmine:
Vaata otse Lucene.Net.Analysis.Common paketti, kuna Lucene.Net.Analysis.Common tugineb Lucene.Net paketi automaatsele allalaadimisele.
Loo uus JiebaTokenizer.cs järgmise koodiga:
Loo uus JiebaAnalyzer.cs järgmise koodiga:
Lucene.Net Loo uusi dokumente ja otsinguid
Lisa veebilehe andmed Lucene'ile regulaarselt või käivitatult ning Lucene salvestab dokumendi füüsilisele kettale analüsaatori kaudu ja kutsub seejärel otsinguliidest, et see leida.
LuceneHelperi abiklassi kood on järgmine:
Salvestus
Store.JAH: See mitte ainult ei indekseeri andmeid, vaid salvestab ka andmeid, nii et otsingutulemused saavad välja infot tagasi tuua. Store.NO: Indekseeritakse ainult andmeid, andmeid ei salvestata ja otsingutulemused ei saa seda välja infot.Säästab kettaruumi;
Nagu allpool näidatud:
Välja tüüp
Lucene.Net väljatüübid on Int32Field, Int64Field, SingleField, DoubleField, BinaryDocValuesField, NumericDocValuesField, SortedDocValuesField, StringField, TextField, StoredField, Palun kasuta vastavalt oma olukorrale sobivat andmetüüpi.
TextField vs. StringField
TextField saab kindlasti leksikaliseeritud, StringField ei tee dokumendis salvestatud sisu leksikaalset analüüsi, vt järgmist:Hüperlingi sisselogimine on nähtav.
Esineb ühendotsing
Järgmistest on 6 kombinatsiooni:
1. PEAB ja PEAB: Leia järjestikuste päringuklauslite ristumiskoht. 2. PEAB ja MUST_NOT: Näitab, et päringuklausli otsingutulemusi, mis vastavad MUST_NOT-le, ei saa päringu tulemustesse kaasata. 3.PEAKS ja MUST_NOT: Pidevas kasutamises on funktsioon sama mis MUST ja MUST_NOT. 4. Kui PEAKS ja MUST kasutatakse koos, on tulemus MUST-klausli otsingutulemus, kuid SHOULD võib mõjutada sorteerimist. 5. PEAKS ja PEAKS: Näitab seost "või" ja lõpliku otsingutulemuse vahel on kõigi otsinguklauslite liit. 6.MUST_NOT ja MUST_NOT: mõttetu, tulemusteta tagasitoomine.
Käivita projekt
Sel hetkel saad alustada projekti, et lisada, uuendada ja otsida liidese koodi järgmiselt:
Vigadest võib teatada järgmiselt:
Taotluse töötlemisel tekkis käsitlemata erand.
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 (string fullPath, FileMode mode, FileAccess access, FileShare share, FileOptions valikud)
TypeInitializationException: The type initializer for 'JiebaNet.Segmenter.JiebaSegmenter' threw an exception. jieba.net Pärast paigaldamist näed Resources kataloogi packages\jieba.NET kataloogis, mis sisaldab sõnastikku ja muid andmefaile, mis on vajalikud jieba.NET käivitamiseks, ning kõige lihtsam konfiguratsioonimeetod on kopeerida kogu Resources kataloog kausta, kus assembly asub, nii et sisseehitatud vaikimisi konfiguratsiooniväärtused jieba.NET kasutatakse.
C:\Users\%USERPROFILE%\.nuget\packages\jieba.net\0.42.2\Resources JiebaNet peab lisama konfiguratsioonikausta, kood on järgmine:
Test lõi 500 uut dokumenti (mis on seotud minu tegeliku olukorraga, ainult viiteks) ja ketas hõivab 119KB, nagu alloleval joonisel näidatud:
(Lõpp)
|