Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 4068|Svare: 2

[Kilde] [Praktisk kamp] Bruk Lucene.Net + Jieba.NET for å bygge et lett søk på stedet

[Kopier lenke]
Publisert 29.10.2023 18:05:43 | | | |
Krav: Fulltekstsøk på nettstedet er en mye brukt funksjon, og den brukes ofte basert på detteElasticSearchSolrUtrulling og utvikling, og nå har to nye blitt lansertRedisSearchMeiliSearchSøkemotor, de to første er tyngre, selv om de to siste ikke er like tunge som de to første, men krever fortsatt utrulling av avhengige tjenester. Denne artikkelen bruker Lucene.Net + Jieba.NET for å bygge et lett søk på stedet.

Lucene.Net

Lucene.Net er en .NET-port av Lucene og er et åpen kildekode-utviklingssett for fulltekstsøkemotorer, det vil si det er ikke en fulltekst-søkemotor, men en fulltekst-søkemotorarkitektur som tilbyr en komplett spørringsmotor og indekseringsmotor.

Tomt:Innloggingen med hyperkoblingen er synlig.
GitHub-adresse:Innloggingen med hyperkoblingen er synlig.

Jieba.NET

Jieba.NET er et partisipp på kinesisk jieba. .NET-versjon (C#-implementering). Den kan utføre funksjoner som ordsegmentering, ordklasseannotasjon, nøkkelorduttrekking osv. for kinesisk tekst, og støtter tilpassede ordbøker.

GitHub-adresse:Innloggingen med hyperkoblingen er synlig.

La oss først se på visualiseringene:




Tilpass analysatoren

Analyzer, TokenStream, Tokenizer, TokenFilterTokenStream i Lucene TokenStream: En strøm som oppnås etter at tokenizeren er behandlet. Denne strømmen lagrer ulike opplysninger om ordsegmentering, som effektivt kan oppnås gjennom TokenStream. Følgende er prosessen med å konvertere filstrømmen til en TokenStream. Først bruker du Tokenizeren til å segmentere ordene, forskjellige tokenizere har forskjellige tokenizere, og etter at tokenizeren er separert, filtrerer du dataene som er delt opp i ord gjennom TokenFilter, som stoppord. Etter filtrering, kombiner all data i en TokenStream.

Referanse:

Innloggingen med hyperkoblingen er synlig.
Innloggingen med hyperkoblingen er synlig.
Innloggingen med hyperkoblingen er synlig.


For å tilpasse Lucene-analysatoren basert på Jieba.NET, er den første referansen som følger:



Se direkte til Lucene.Net.Analysis.Common-pakken, da Lucene.Net.Analysis.Common er avhengig av at Lucene.Net-pakken lastes ned automatisk.

Opprett en ny JiebaTokenizer.cs med følgende kode:

Opprett en ny JiebaAnalyzer.cs med følgende kode:



Lucene.Net Opprett nye dokumenter og søk

Legg til data fra et nettsted til Lucene regelmessig eller utløst, og Lucene lagrer dokumentet på en fysisk disk gjennom analysatoren, og kaller deretter søkegrensesnittet for å finne det.

LuceneHelper-koden for hjelpeklassen er som følger:



Lagerlagring

Store.YES: Det vil ikke bare indeksere dataene, men også lagre dataene, slik at søkeresultatene kan returnere feltinformasjon.
Store.NO: Kun dataene vil bli indeksert, og dataene vil ikke bli lagret, og søkeresultatene kan ikke hente denne feltinformasjonen.Sparer diskplass

Som vist nedenfor:




Felttype

Felttypene i Lucene.Net er Int32Field, Int64Field, SingleField, DoubleField, BinaryDocValuesField, NumericDocValuesField, SortedDocValuesField, StringField, TextField, StoredField, Vennligst bruk riktig datatype i henhold til din situasjon.

TextField vs. StringField

TextField vil definitivt bli leksikalisert, StringField vil ikke utføre leksikalsk analyse av innholdet lagret i dokumentet, se til:Innloggingen med hyperkoblingen er synlig.

Forekommende sammensatt søk


Det finnes 6 kombinasjoner av følgende:

1. MÅ og MÅ: Få skjæringspunktet mellom påfølgende spørringsklausuler.
2. MUST og MUST_NOT: Indikerer at søkeresultatene til spørringsklausulen som tilsvarer MUST_NOT ikke kan inkluderes i søkeresultatene.
3.SHOULD og MUST_NOT: Når funksjonen brukes kontinuerlig, er funksjonen den samme som MUST og MUST_NOT.
4. Når SHOULD og MUST brukes sammen, er resultatet søkeresultatet til MUST-klausulen, men SHOULD kan påvirke sorteringen.
5. SHOULD og SHOULD: Indikerer forholdet mellom "eller", og det endelige søkeresultatet er sammenslåingen av alle søkeklausuler.
6.MUST_NOT og MUST_NOT: meningsløs, henting uten resultater.


Kjør prosjektet

På dette tidspunktet kan du starte prosjektet for å legge til, oppdatere og søke etter grensesnittkoden som følger:


Feil kan rapporteres som følger:

Et unntak som ikke ble håndtert, oppsto under behandlingen av forespørselen.
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(streng fullPath, FileMode-modus, FileAccess-tilgang, FileShare share, FileOptions-alternativer)

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

jieba.net Etter installasjon kan du se Resources jieba.NET-katalogen i packages\-mappen, som inneholder ordboken og andre datafiler som kreves for å kjøre jieba.NET, og den enkleste konfigurasjonsmetoden er å kopiere hele Resources-mappen til mappen der assembleren befinner seg, slik at de innebygde standardkonfigurasjonsverdiene brukes jieba.NET.

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

JiebaNet må legge til en konfigurasjonsmappe, koden er som følger:

Testen skapte 500 nye dokumenter (relatert til min faktiske situasjon, kun til referanse), og disken opptar 119KB, som vist i figuren nedenfor:



(Slutt)




Foregående:Følg den offisielle kontoen og få «invitasjonskoden» gratis
Neste:.NET konverterer databasens varbinære streng til et byte[]-array
 Vert| Publisert 29.10.2023 18:10:40 |
Elasticsearch (ES) klarer ikke å skrive data til feilløsningen
https://www.itsvse.com/thread-10568-1-1.html

Elasticsearch rydder automatisk opp indekser for å frigjøre diskplass
https://www.itsvse.com/thread-10273-1-1.html

Elasticsearch-7.x bruker xpack for sikkerhetsautentisering
https://www.itsvse.com/thread-10206-1-1.html

Distribuer Elasticsearch-tjenesten ved hjelp av Docker
https://www.itsvse.com/thread-10148-1-1.html

Elasticsearch bruker elasticdump for å sikkerhetskopiere og migrere data
https://www.itsvse.com/thread-10143-1-1.html

Installer den frittstående versjonen av elasticsearch 7.10.2-veiledningen på Windows
https://www.itsvse.com/thread-9962-1-1.html

Introduksjon til Elasticsearch søkefokuseringskonfigurasjon
https://www.itsvse.com/thread-9562-1-1.html

.NET/C# Bruk Elasticsearch-feilsøking for å se forespørsels- og svarinformasjon
https://www.itsvse.com/thread-9561-1-1.html

ASP.NET Core Link Trace (5) Jaeger-data vedvarer i elastisk søk
https://www.itsvse.com/thread-9553-1-1.html

Elasticsearch (ES) replikerer kloneindeksen
https://www.itsvse.com/thread-9545-1-1.html

Elasticsearch(ES) klyngehelse: gul (6 av 7) status
https://www.itsvse.com/thread-9544-1-1.html

Elasticsearch(ES)-klyngens helse: rød Feilanalyse
https://www.itsvse.com/thread-9543-1-1.html

Java geolokasjonsinformasjon i ElasticSearch (geo_point)
https://www.itsvse.com/thread-6444-1-1.html

ElasticsearchParseException[felt må være enten [lat], [lon] eller [geohash]]
https://www.itsvse.com/thread-6442-1-1.html

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

【Practical Action】Kibana installasjonsveiledning for Elasticsearch
https://www.itsvse.com/thread-6400-1-1.html

Geogeografiske koordinater for Elasticsearchs avanserte funksjonsfamilie
https://www.itsvse.com/thread-6399-1-1.html

ElasticSearch sammensatte spørringer må, bør must_not brukes
https://www.itsvse.com/thread-6334-1-1.html

Elasticsearch sletter og indekserer alle dokumentdata
https://www.itsvse.com/thread-6321-1-1.html

[Faktisk kamp]. net/c# Kall elasticsearch-søk via NEST [med kildekode]
https://www.itsvse.com/thread-6294-1-1.html

Årsaker og løsninger for unassigned_shards enkeltnode Elasticsearch
https://www.itsvse.com/thread-6193-1-1.html

Veiledning for installasjon av elasticsearch-analysis-ik i elasticsearch-6.5.2
https://www.itsvse.com/thread-6191-1-1.html

Installer elasticsearch-6.5.2 elasticsearch-head-pluginen
https://www.itsvse.com/thread-6190-1-1.html

Centos 7 installasjon og distribusjon elasticsearch-6.5.2 veiledning
https://www.itsvse.com/thread-6173-1-1.html

Valg av søkemotor: Elasticsearch vs Solr
https://www.itsvse.com/thread-6168-1-1.html
 Vert| Publisert 2023-11-5 21:27:45 |
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com