Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 4068|Svar: 2

[Källa] [Praktisk strid] Använd Lucene.Net + Jieba.NET för att bygga en lättviktig sökning på platsen

[Kopiera länk]
Publicerad den 29-10-2023 18:05:43 | | | |
Krav: Fulltextsökning på sidan är en vanligt använd funktion och används ofta baserat på denElasticSearchSolrUtrullning och utveckling, och nu har två nya släpptsRedisSearchMeiliSearchSökmotor, de två första är tyngre, även om de två sista inte är lika tunga som de två första, men de kräver ändå att beroende tjänster implementeras, denna artikel använder Lucene.Net + Jieba.NET för att bygga en lättviktig sökning på plats.

Lucene.Net

Lucene.Net är en .NET-portering av Lucene och är ett öppen källkods-utvecklingskit för fulltextsökmotorer, det vill säga det är inte en fulltext-sökmotor, utan en fulltext-sökmotorarkitektur som tillhandahåller en komplett frågemotor och indexeringsmotor.

Plats:Inloggningen med hyperlänken är synlig.
GitHub-adress:Inloggningen med hyperlänken är synlig.

Jieba.NET

Jieba.NET är ett particip på kinesiska jieba. .NET-version (C#-implementation). Den kan utföra funktioner som ordsegmentering, ordklassannotering, nyckelordsextraktion med mera för kinesisk text, och stöder anpassade ordböcker.

GitHub-adress:Inloggningen med hyperlänken är synlig.

Först, låt oss titta på renderingarna:




Anpassa analysatorn

Analyzer, TokenStream, Tokenizer, TokenFilterTokenStream i Lucene TokenStream: En ström som erhålls efter att tokenizern har behandlats. Denna ström lagrar olika uppgifter om ordsegmentering, som effektivt kan erhållas via TokenStream. Följande är processen att konvertera filströmmen till en TokenStream. Först använder man Tokenizern för att segmentera orden, olika tokenizers har olika tokenizers, efter att tokenizern separerats filtreras data som har delats upp i ord genom TokenFilter, såsom stoppord. Efter filtrering, kombinera all data till en TokenStream.

Hänvisning:

Inloggningen med hyperlänken är synlig.
Inloggningen med hyperlänken är synlig.
Inloggningen med hyperlänken är synlig.


För att anpassa Lucene-analysatorn baserat på Jieba.NET är den första referensen följande:



Se direkt till paketet Lucene.Net.Analysis.Common, eftersom Lucene.Net.Analysis.Common förlitar sig på att Lucene.Net-paketet laddas ner automatiskt.

Skapa en ny JiebaTokenizer.cs med följande kod:

Skapa en ny JiebaAnalyzer.cs med följande kod:



Lucene.Net Skapa nya dokument och sökningar

Lägger till data från en webbplats till Lucene regelbundet eller med trigger, och Lucene lagrar dokumentet på en fysisk disk via analysatorn och anropar sedan sökgränssnittet för att hitta det.

LuceneHelpers hjälpklasskod är som följer:



Förvaring i butik

Store.YES: Den kommer inte bara att indexera datan, utan även spara den, så att sökresultaten kan returnera fältinformation.
Store.NO: Endast data kommer att indexeras, och datan kommer inte att sparas, och sökresultaten kan inte få fram denna fältinformation.Sparar diskutrymme

Som visas nedan:




Fälttyp

Fälttyperna i Lucene.Net är Int32Field, Int64Field, SingleField, DoubleField, BinaryDocValuesField, NumericDocValuesField, SortedDocValuesField, StringField, TextField, StoredField, Vänligen använd rätt datatyp enligt din situation.

TextField vs. StringField

TextField kommer definitivt att vara lexikaliserad, StringField kommer inte att utföra lexikal analys av innehållet som lagras i dokumentet, se till:Inloggningen med hyperlänken är synlig.

Förekommande sammansatt sökning


Det finns 6 kombinationer av följande:

1. MÅSTE och MÅSTE: Ta skärningspunkten mellan på varandra följande frågeklausuler.
2. MUST och MUST_NOT: Indikerar att sökresultaten för frågeklausulen som motsvarar MUST_NOT inte kan inkluderas i sökresultaten.
3.SHOULD och MUST_NOT: När funktionen används kontinuerligt är den densamma som MUST och MUST_NOT.
4. När SHOULD och MUST används tillsammans blir resultatet sökresultatet för MUST-klausulen, men SHOULD kan påverka sorteringen.
5. BÖR och BÖR: Indikerar relationen mellan "eller", och det slutliga sökresultatet är unionen av alla sökklausuler.
6.MUST_NOT och MUST_NOT: meningslös, återvinning utan resultat.


Driv projektet

Vid denna punkt kan du starta projektet för att lägga till, uppdatera och söka efter gränssnittskoden enligt följande:


Fel kan rapporteras enligt följande:

Ett ohanterat undantag inträffade under behandlingen av begäran.
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(sträng fullPath, FileMode mode, FileAccess access, FileShare share, FileOptions-alternativ)

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

jieba.net Efter installationen kan du se Resources-katalogen i packages\jieba.NET-katalogen, som innehåller ordboken och andra datafiler som krävs för att köra jieba.NET, och den enklaste konfigurationsmetoden är att kopiera hela Resources-katalogen till den katalog där assembleren finns, så att de inbyggda standardkonfigurationsvärdena används jieba.NET.

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

JiebaNet behöver lägga till en konfigurationsmapp, koden är följande:

Testet skapade 500 nya dokument (relaterade till min faktiska situation, endast som referens), och disken upptar 119 KB, som visas i figuren nedan:



(Slut)




Föregående:Följ det officiella kontot och få "inbjudningskoden" gratis
Nästa:.NET konverterar databasens varbinärsträng till en byte[]-array
 Hyresvärd| Publicerad 2023-10-29 18:10:40 |
Elasticsearch (ES) misslyckas med att skriva data till fellösningen
https://www.itsvse.com/thread-10568-1-1.html

Elasticsearch rensar automatiskt index för att frigöra diskutrymme
https://www.itsvse.com/thread-10273-1-1.html

Elasticsearch-7.x använder xpack för säkerhetsautentisering
https://www.itsvse.com/thread-10206-1-1.html

Distribuera Elasticsearch-tjänsten med Docker
https://www.itsvse.com/thread-10148-1-1.html

Elasticsearch använder elasticdump för att säkerhetskopiera och migrera data
https://www.itsvse.com/thread-10143-1-1.html

Installera den fristående versionen av elasticsearch 7.10.2-handledningen på Windows
https://www.itsvse.com/thread-9962-1-1.html

Introduktion till Elasticsearchs sökmarkeringskonfiguration
https://www.itsvse.com/thread-9562-1-1.html

.NET/C# Använd Elasticsearch-felsökning för att se information om förfrågningar och svar
https://www.itsvse.com/thread-9561-1-1.html

ASP.NET Core Link Trace (5) Jaeger-data finns kvar i elasticsearch
https://www.itsvse.com/thread-9553-1-1.html

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

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

Elasticsearch(ES)-klusterets hälsa: röd Felanalys
https://www.itsvse.com/thread-9543-1-1.html

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

ElasticsearchParseException[fältet måste vara antingen [lat], [lon] eller [geohash]]
https://www.itsvse.com/thread-6442-1-1.html

elasticsearch-mappingfälttyp
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 installationshandledning för Elasticsearch
https://www.itsvse.com/thread-6400-1-1.html

Geogeografiska koordinater för Elasticsearchs avancerade funktionsfamilj
https://www.itsvse.com/thread-6399-1-1.html

ElasticSearch sammansatta frågor måste, bör must_not användas
https://www.itsvse.com/thread-6334-1-1.html

Elasticsearch raderar och indexerar all dokumentdata
https://www.itsvse.com/thread-6321-1-1.html

[Verklig strid]. net/c# Anrop elasticsearch-sökning via NEST [med källkod]
https://www.itsvse.com/thread-6294-1-1.html

Orsaker och lösningar för unassigned_shards ennod-elasticsearch
https://www.itsvse.com/thread-6193-1-1.html

Handledning för installation av elasticsearch-analysis-ik i elasticsearch-6.5.2
https://www.itsvse.com/thread-6191-1-1.html

Installera elasticsearch-6.5.2 elasticsearch-head-pluginet
https://www.itsvse.com/thread-6190-1-1.html

Centos 7 installations- och distributionsguide elasticsearch-6.5.2
https://www.itsvse.com/thread-6173-1-1.html

Sökmotorval: Elasticsearch vs Solr
https://www.itsvse.com/thread-6168-1-1.html
 Hyresvärd| Publicerad den 2023-11-5 21:27:45 |
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com