|
|
Közzétéve: 2023-10-29, 18:05:43
|
|
|
|

Követelmények: A teljes szöveges keresés az oldalon egy általánosan használt funkció, és ezt alaposan használjákElasticSearch、SolrBevezetés és fejlesztés, és most két új is megjelentRedisSearch、MeiliSearchKeresőmotor, az első kettő nehezebb, bár az utolsó kettő nem olyan nehez, mint az első kettő, de mégis függő szolgáltatásokat kell telepíteniük, ez a cikk Lucene.Net + Jieba.NET segítségével könnyű, oldali keresést épít fel.
Lucene.Net
Lucene.Net a Lucene .NET portja, és egy nyílt forráskódú, teljes szöveges keresőmotor-fejlesztő készlet, vagyis nem teljes szöveges keresőmotor, hanem teljes szöveges keresőmotor-architektúra, amely teljes lekérdezési motort és indexezőmotort biztosít.
Telephely:A hiperlink bejelentkezés látható. GitHub cím:A hiperlink bejelentkezés látható.
Jieba.NET
Jieba.NET egy participális kínai jieba. .NET verzió (C# implementáció). Képes olyan funkciókat ellátni, mint a szószegmentálás, szórész megjegyzése, kulcsszó kivonása stb. kínai szöveghez, és támogatja az egyedi szótárokat.
GitHub cím:A hiperlink bejelentkezés látható.
Először nézzük meg a rendereléseket:
Testreszabni az analizátort
Analyzer, TokenStream, Tokenizer, TokenFilterTokenStream a Lucene TokenStreamben: Egy stream, amelyet a tokenizátor feldolgozása után szereztek be. Ez az áramfolyam különféle információkat tárol a szószegmentálásról, amelyeket hatékonyan lehet elérni a TokenStreamen keresztül. Az alábbiakban következik a fájlfolyam TokenStreamré átalakításának folyamata: Először használd a tokenizert a szavak szegmentesítésére, a különböző tokenizereknek különböző tokenzierei vannak, miután a tokenzier szétvál, szűrjék a TokenFilteren keresztül a szavakká bontott adatokat, például a stop szavakat. A szűrés után egyesítse az összes adatot egy TokenStreambe.
Utalás:
A hiperlink bejelentkezés látható.
A hiperlink bejelentkezés látható.
A hiperlink bejelentkezés látható.
A Lucene analizátor Jieba.NET alapján testreszabásához az első hivatkozás a következő:
Közvetlenül a Lucene.Net.Analysis.Common csomagra hivatkozhatunk, mivel a Lucene.Net.Analysis.Common automatikusan a Lucene.Net csomagra támaszkodik.
Hozz létre új JiebaTokenizer.cs a következő kóddal:
Hozz létre új JiebaAnalyzer.cs a következő kóddal:
Lucene.Net Új dokumentumok és keresések létrehozása
Rendszeresen vagy trigger módon hozzáadja a weboldal adatait a Lucene-hez, a Lucene pedig egy fizikai lemezen tárolja a dokumentumot az elemzőn keresztül, majd a keresőfelületet hívja, hogy megtalálja.
A LuceneHelper segítő osztálykód a következő:
Tároló tárolás
Store.YES: Nemcsak indexelni fogja az adatokat, hanem elmenti is, hogy a keresési eredmények visszaadhassák a mező adatait. Store.NO: Csak az adatokat indexeljük, az adatok nem mentődnek el, és a keresési eredmények nem kaphatják meg ezt a mező információt.Lemez helyet takarít meg;
Ahogy az alábbiakban látható:
Mezőmező típus
A Lucene.Net mezőtípusai: Int32Field, Int64Field, SingleField, DoubleField, BinaryDocValuesField, NumericDocValuesField, SortedDocValuesField, StringField, TextField, StoredField, Kérjük, használd a megfelelő adattípust a saját helyzetedhez igazítva.
TextField vs. StringField
A TextField mindenképpen lexikalizált lesz, a StringField nem végez lexikalis elemzést a doc-ban tárolt tartalomról, lásd például:A hiperlink bejelentkezés látható.
Összetett keresés
Az alábbiak 6 kombinációja létezik:
1. KÖTELEZŐ és KELL: Ismerd meg az egymást követő lekérdezési záradékok metszéspontját. 2. KÖTELEZ és MUST_NOT: Jelzi, hogy a MUST_NOT lekérdezési záradék keresési eredményei nem kerülhetnek bele a lekérdezési eredményekbe. 3.SHOULD és MUST_NOT: Folyamatos használat esetén a függvény ugyanaz, mint a MUST és MUST_NOT. 4. Amikor a SHOULD és MUST szavakat együtt használják, az eredmény a MUST záradék keresési eredménye, de a SHOULD befolyásolhatja a rendezést. 5. KELLENE és KELL: Jelzi a "vagy" közötti kapcsolatot, és a végső keresési eredmény az összes keresési záradék egyesítése. 6.MUST_NOT és MUST_NOT: értelmetlen, eredménytelen visszakeresés.
A projekt vezetése
Ezen a ponton elindíthatod a projektet, hogy hozzáadhasd, frissítsd és keresd az interfész kódot az alábbiak szerint:
A hibák az alábbiak szerint jelenthetők:
A kérés feldolgozása közben kezeletlen kivétel történt.
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 mód, FileAccess hozzáférés, FileShare megosztás, FileOptions opciók)
TypeInitializationException: The type initializer for 'JiebaNet.Segmenter.JiebaSegmenter' threw an exception. jieba.net Telepítés után a Resources könyvtár a packages\jieba.NET könyvtárban látható, amely tartalmazza a jieba.NET futtatásához szükséges szótárt és egyéb adatfájlokat, és a legegyszerűbb konfigurációs módszer, ha az egész Resources könyvtárat átmásolod abba a könyvtárba, ahol az assembly található, így a beépített alapértelmezett konfigurációs értékek jieba.NET használatban maradnak.
C:\Users\%USERPROFILE%\.nuget\packages\jieba.net\0.42.2\Resources A JiebaNet-nek konfigurációs mappát kell hozzáadnia, a kód a következő:
A teszt 500 új dokumentumot hozott létre (ami a tényleges helyzetemhez kapcsolódik, csak referenciaként), és a lemez 119KB-ot foglal el, ahogy az alábbi ábrán látható:
(Vége)
|
Előző:Kövesd a hivatalos fiókot, és szerezd meg ingyen a "meghívókódot"Következő:A .NET átalakítja az adatbázis varbináris stringjét egy byte[] tömbjé[] tömbbe
|