Vaatimukset: Koko tekstin haku sivustolla on yleisesti käytetty toiminto, ja sitä käytetään yleisesti sen pohjaltaElasticSearch、SolrKäyttöönotto ja kehitys, ja nyt kaksi uutta on julkaistuRedisSearch、MeiliSearchHakukoneet, ensimmäiset kaksi ovat raskaampia, vaikka viimeiset eivät ole yhtä raskaita kuin kaksi ensimmäistä, mutta vaativat silti riippuvaisia palveluita, tässä artikkelissa käytetään Lucene.Net + Jieba.NET kevyen paikan päällä tehtävän haun rakentamiseen.
Lucene.Net
Lucene.Net on .NET-porttaus Lucenesta ja avoimen lähdekoodin kokotekstihakukoneen kehityspaketti, eli se ei ole kokotekstihakukone, vaan kokotekstihakukonearkkitehtuuri, joka tarjoaa täydellisen hakukoneen ja indeksointimoottorin.
Paikka:Hyperlinkin kirjautuminen on näkyvissä. GitHub-osoite:Hyperlinkin kirjautuminen on näkyvissä.
Jieba.NET
Jieba.NET on partisiipin kiinalainen jieba. .NET-versio (C#-toteutus). Se pystyy suorittamaan toimintoja kuten sanasegmentointia, sananotointia, avainsanojen poimimista jne. kiinalaiselle tekstille, ja tukee räätälöityjä sanakirjoja.
GitHub-osoite:Hyperlinkin kirjautuminen on näkyvissä.
Katsotaanpa ensin renderöintiä:
Muokkaa analysaattoria
Analyzer, TokenStream, Tokenizer, TokenFilterTokenStream in Lucene TokenStream: Stream, joka saadaan tokenizaattorin käsittelyn jälkeen. Tämä virta tallentaa erilaisia tietoja sanasegmentoinnista, jotka voidaan tehokkaasti saada TokenStreamin kautta. Seuraavassa on prosessi, jossa tiedostovirta muunnetaan TokenStreamiksi Ensin käytä tokenizeria sanojen segmentointiin, eri tokenizaattoreilla on eri tokenzierit, ja kun tokenzier on erotettu, suodata TokenFilterin kautta sanoiksi jaettu data, kuten stop-sanat. Suodattamisen jälkeen yhdistä kaikki data TokenStreamiksi.
Viittaus:
Hyperlinkin kirjautuminen on näkyvissä.
Hyperlinkin kirjautuminen on näkyvissä.
Hyperlinkin kirjautuminen on näkyvissä.
Lucene-analysaattorin räätälöintiin Jieba.NET perusteella ensimmäinen viite on seuraava:
Viittaa suoraan Lucene.Net.Analysis.Common -pakettiin, sillä Lucene.Net.Analysis.Common lataa automaattisesti Lucene.Net-paketin.
Luo uusi JiebaTokenizer.cs seuraavalla koodilla:
Luo uusi JiebaAnalyzer.cs seuraavalla koodilla:
Lucene.Net Luo uusia asiakirjoja ja hakuja
Lisää dataa verkkosivustolta Luceneen säännöllisesti tai laukaisevasti, ja Lucene tallentaa dokumentin fyysiselle levylle analysoijan kautta, ja kutsuu sitten hakukäyttöliittymän löytääkseen sen.
LuceneHelperin ohjeluokkakoodi on seuraava:
Varastosäilytys
Store.YES: Se ei ainoastaan indeksoi dataa, vaan myös tallentaa tiedot, jotta hakutulokset voivat palauttaa kenttätiedot. Store.NO: Vain data indeksoidaan, eikä data tallenneta, eikä hakutulokset voi saada tätä kenttätietoa.Säästää levytilaa;
Kuten alla on esitetty:
Kenttätyyppi
Lucene.Net kenttätyypit ovat Int32Field, Int64Field, SingleField, DoubleField, BinaryDocValuesField, NumericDocValuesField, SortedDocValuesField, StringField, TextField, StoredField, Käytä tilanteeseesi sopivaa tietotyyppiä.
TextField vs. StringField
TextField tullaan varmasti leksikalisoitumaan, StringField ei tee leksikaalista analyysiä dokumenttiin tallennetusta sisällöstä, katso:Hyperlinkin kirjautuminen on näkyvissä.
Tapahtuu yhdistehaku
Seuraavista on 6 yhdistelmää:
1. TÄYTYY ja TÄYTYY: Ymmärrä peräkkäisten kyselylausekkeiden leikkauspiste. 2. TÄYTYY ja MUST_NOT: Tarkoittaa, että MUST_NOT vastaavan kyselylausekkeen hakutuloksia ei voida sisällyttää kyselyn tuloksiin. 3.SHOULD ja MUST_NOT: Kun niitä käytetään jatkuvasti, funktio on sama kuin MUST ja MUST_NOT. 4. Kun SHOULD ja MUST käytetään yhdessä, tulos on MUST-lauseen hakutulos, mutta SHOULD voi vaikuttaa lajitteluun. 5. PITÄISI ja PITÄISI: Ilmaisee suhteen "tai"-lauseen välillä, ja lopullinen hakutulos on kaikkien hakulausekkeiden yhdistelmä. 6.MUST_NOT ja MUST_NOT: merkityksetön, tulokseton palautus.
Johda projekti
Tässä vaiheessa voit aloittaa projektin lisätäksesi, päivittääksesi ja etsiäksesi käyttöliittymäkoodia seuraavasti:
Virheitä voidaan raportoida seuraavasti:
Käsittelemätön poikkeus tapahtui pyynnön käsittelyn aikana.
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-asetukset)
TypeInitializationException: The type initializer for 'JiebaNet.Segmenter.JiebaSegmenter' threw an exception. jieba.net Asennuksen jälkeen näet Resources-kansion packages\jieba.NET-hakemistossa, joka sisältää sanakirjan ja muut datatiedostot, jotka vaaditaan jieba.NET suorittamiseen, ja helpoin konfigurointitapa on kopioida koko Resources-hakemisto siihen hakemistoon, jossa assembly sijaitsee, jotta sisäänrakennetut oletusasetukset jieba.NET käytetään.
C:\Users\%USERPROFILE%\.nuget\packages\jieba.net\0.42.2\Resources JiebaNetin täytyy lisätä konfiguraatiokansio, koodi on seuraava:
Testi loi 500 uutta asiakirjaa (liittyen omaan tilanteeseeni, vain viitteeksi), ja levy vie 119KB, kuten alla olevassa kuvassa näkyy:
(Loppu)
|