Prasības: Pilnteksta meklēšana vietnē ir bieži izmantota funkcija, un to parasti izmanto, pamatojoties uz toElastīga meklēšana、SolrsIzvietošana un izstrāde, un tagad ir izlaisti divi jauniAtkārtota meklēšana、MeiliSearchMeklētājprogramma, pirmie divi ir smagāki, lai gan pēdējie divi nav tik smagi kā pirmie divi, bet joprojām ir jāizvieto atkarīgi pakalpojumi, šajā rakstā tiek izmantoti Lucene.Net + Jieba.NET, lai izveidotu vieglu meklēšanu uz vietas.
Lucene.Net
Lucene.Net ir Lucene .NET ports, un tas ir atvērtā koda pilnteksta meklētājprogrammu izstrādes komplekts, t.i., tā nav pilna pilna teksta meklētājprogramma, bet pilnteksta meklētājprogrammas arhitektūra, kas nodrošina pilnīgu vaicājumu un indeksēšanas programmu.
Vietnes:Hipersaites pieteikšanās ir redzama. GitHub adrese:Hipersaites pieteikšanās ir redzama.
Jieba.NET
Jieba.NET ir ķīniešu jieba. .NET versija (C# ieviešana). Tas var veikt tādas funkcijas kā vārdu segmentēšana, runas daļas anotācija, atslēgvārdu ekstrakcija utt.
GitHub adrese:Hipersaites pieteikšanās ir redzama.
Vispirms apskatīsim atveidojumus:
Analizatora pielāgošana
Analizators, TokenStream, Tokenizer, TokenFilterTokenStream Lucene TokenStream: straume, kas iegūta pēc tokenizatora apstrādes. Šajā straumē tiek glabāta dažāda informācija par vārdu segmentāciju, ko var efektīvi iegūt, izmantojot TokenStream. Tālāk ir aprakstīts failu plūsmas pārvēršanas process par TokenStream Pirmkārt, izmantojiet Tokenizer, lai segmentētu vārdus, dažādiem tokenizatoriem ir dažādi tokenzieri, pēc tam, kad tokenzier ir atdalīts, filtrējiet datus, kas ir sadalīti vārdos, izmantojot TokenFilter, piemēram, pieturvārdus. Pēc filtrēšanas apvienojiet visus datus TokenStream.
Atsauce:
Hipersaites pieteikšanās ir redzama.
Hipersaites pieteikšanās ir redzama.
Hipersaites pieteikšanās ir redzama.
Lai pielāgotu Lucene analizatoru, pamatojoties uz Jieba.NET, pirmā atsauce ir šāda:
Skatiet tieši Lucene.Net.Analysis.Common pakotni, jo Lucene.Net.Analysis.Common automātiskai lejupielādei ir atkarīga no Lucene.Net pakotnes.
Izveidojiet jaunu JiebaTokenizer.cs ar šādu kodu:
Izveidojiet jaunu JiebaAnalyzer.cs ar šādu kodu:
Lucene.Net Jaunu dokumentu izveide un meklēšana
Pievienojiet datus no vietnes Lucene regulāri vai aktivizēti, un Lucene saglabā dokumentu fiziskā diskā, izmantojot analizatoru, un pēc tam izsauc meklēšanas interfeisu, lai to atrastu.
LuceneHelper palīdzības klases kods ir šāds:
Krātuve veikalā
Store.YES: Tas ne tikai indeksēs datus, bet arī saglabās datus, lai meklēšanas rezultāti varētu atgriezt lauka informāciju. Store.NO: Tiks indeksēti tikai dati, un dati netiks saglabāti, un meklēšanas rezultāti nevar iegūt šo lauka informāciju.Ietaupa vietu diskā;
Kā parādīts zemāk:
Lauka lauka tips
Lucene.Net lauku tipi ir Int32Field, Int64Field, SingleField, DoubleField, BinaryDocValuesField, NumericDocValuesField, SortedDocValuesField, StringField, TextField, StoredField, Lūdzu, izmantojiet atbilstošu datu veidu atbilstoši jūsu situācijai.
TextField salīdzinājumā ar StringField
TextField noteikti tiks leksikalizēts, StringField neveiks dokumentā saglabātā satura leksisko analīzi, skatiet:Hipersaites pieteikšanās ir redzama.
Notiek salikta meklēšana
Ir 6 kombinācijas:
1. MUST un MUST: iegūstiet secīgu vaicājumu klauzulu krustojumu. 2. MUST un MUST_NOT: norāda, ka vaicājuma rezultātos nevar iekļaut vaicājuma klauzulas meklēšanas rezultātus, kas atbilst MUST_NOT. 3.SHOULD un MUST_NOT: Lietojot nepārtraukti, funkcija ir tāda pati kā MUST un MUST_NOT. 4. Ja SHOULD un MUST tiek izmantoti kopā, rezultāts ir klauzulas MUST meklēšanas rezultāts, bet SHOULD var ietekmēt kārtošanu. 5. VAJADZĒTU un VAJADZĒTU: norāda saistību starp "vai", un galīgais meklēšanas rezultāts ir visu meklēšanas klauzulu savienība. 6.MUST_NOT un MUST_NOT: bezjēdzīga, atgūšana bez rezultātiem.
Projekta izpilde
Šajā brīdī varat sākt projektu, lai pievienotu, atjauninātu un meklētu interfeisa kodu šādi:
Par kļūdām var ziņot šādi:
Pieprasījuma apstrādes laikā radās neapstrādāts izņēmums.
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(virkne fullPath, FileMode režīms, piekļuve FileAccess, FileShare koplietošana, FileOptions opcijas)
TypeInitializationException: The type initializer for 'JiebaNet.Segmenter.JiebaSegmenter' threw an exception. jieba.net Pēc instalēšanas direktorijā pakotnes\jieba.NET varat redzēt direktoriju Resursi, kas satur vārdnīcu un citus datu failus, kas nepieciešami jieba.NET palaišanai, un vienkāršākā konfigurācijas metode ir kopēt visu resursu direktoriju direktorijā, kurā atrodas montāža, lai iebūvētās noklusējuma konfigurācijas vērtības tiktu izmantotas jieba.NET.
C:\Users\%USERPROFILE%\.nuget\packages\jieba.net\0.42.2\Resources JiebaNet ir jāpievieno konfigurācijas mape, kods ir šāds:
Testa laikā tika izveidoti 500 jauni dokumenti (saistīti ar manu faktisko situāciju, tikai uzziņai), un disks aizņem 119 KB, kā parādīts zemāk redzamajā attēlā:
(Beigas)
|