Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 4068|Antwoord: 2

[Bron] [Praktische gevechten] Gebruik Lucene.Net + Jieba.NET om een lichte zoekopdracht op locatie te bouwen

[Link kopiëren]
Geplaatst op 29-10-2023 18:05:43 | | | |
Vereisten: Full-text search op de site is een veelgebruikte functie en wordt er vaak op gebaseerd toegepastElasticSearchSolrImplementatie en ontwikkeling, en nu zijn er twee nieuwe uitgebrachtRedisSearchMeiliSearchZoekmachine, de eerste twee zijn zwaarder, hoewel de laatste twee niet zo zwaar zijn als de eerste twee, maar je moet nog steeds afhankelijke diensten inzetten; dit artikel gebruikt Lucene.Net + Jieba.NET om een lichtgewicht zoekfunctie op locatie te bouwen.

Lucene.Net

Lucene.Net is een .NET-port van Lucene en is een open-source full-text zoekmachine-ontwikkelingskit, oftewel geen full-text zoekmachine, maar een full-text zoekmachinearchitectuur die een complete query-engine en indexeringsengine biedt.

Ligging:De hyperlink-login is zichtbaar.
GitHub-adres:De hyperlink-login is zichtbaar.

Jieba.NET

Jieba.NET is een deelwoord Chinees jieba. .NET-versie (C#-implementatie). Het kan functies uitvoeren zoals woordsegmentatie, woordsoortannotatie, trefwoordextractie, enzovoort voor Chinese tekst, en ondersteunt aangepaste woordenboeken.

GitHub-adres:De hyperlink-login is zichtbaar.

Laten we eerst naar de renderings kijken:




Pas de analyzer aan

Analyzer, TokenStream, Tokenizer, TokenFilterTokenStream in Lucene TokenStream: Een stroom die wordt verkregen nadat de tokenizer is verwerkt. Deze stroom slaat diverse informatie over woordsegmentatie op, die effectief kan worden verkregen via TokenStream. Het volgende is het proces van het omzetten van de bestandsstroom naar een TokenStream. Eerst gebruik je de Tokenizer om de woorden te segmenteren, verschillende tokenizers hebben verschillende tokenizers, en nadat de tokenizer is gescheiden, filteren we de gegevens die zijn verdeeld in woorden via de TokenFilter, zoals stopwoorden. Na het filteren combineer je alle data in een TokenStream.

Referentie:

De hyperlink-login is zichtbaar.
De hyperlink-login is zichtbaar.
De hyperlink-login is zichtbaar.


Om de Lucene-analyzer aan te passen op basis van Jieba.NET, is de eerste referentie als volgt:



Verwijs direct naar het Lucene.Net.Analysis.Common-pakket, want Lucene.Net.Analysis.Common is afhankelijk van het automatisch downloaden van het Lucene.Net-pakket.

Maak een nieuw JiebaTokenizer.cs aan met de volgende code:

Maak een nieuw JiebaAnalyzer.cs aan met de volgende code:



Lucene.Net Maak nieuwe documenten en zoekopdrachten aan

Voeg gegevens van een website regelmatig of getriggerd toe aan Lucene, en Lucene slaat het document op een fysieke schijf op via de analyzer, waarna hij de zoekinterface aanroept om het te vinden.

De LuceneHelper helpklassecode is als volgt:



Opslag in de winkel

Store.YES: Het zal niet alleen de data indexeren, maar ook opslaan, zodat de zoekresultaten veldinformatie kunnen teruggeven.
Store.NO: Alleen de gegevens worden geïndexeerd, de gegevens worden niet opgeslagen, en de zoekresultaten kunnen deze veldinformatie niet verkrijgen.Bespaart schijfruimte

Zoals hieronder getoond:




Veldveldtype

De veldtypen in Lucene.Net zijn Int32Field, Int64Field, SingleField, DoubleField, BinaryDocValuesField, NumericDocValuesField, SortedDocValuesField, StringField, TextField, StoredField, Gebruik alsjeblieft het juiste datatype dat past bij jouw situatie.

TextField vs. StringField

TextField zal zeker lexicaliseerd zijn, StringField zal geen lexicale analyse uitvoeren van de inhoud die in het document is opgeslagen, zie naar:De hyperlink-login is zichtbaar.

Occuring compound search


Er zijn 6 combinaties van de volgende:

1. MOET en MOET: Krijg het snijpunt van opeenvolgende queryclausules.
2. MUST en MUST_NOT: Geeft aan dat de zoekresultaten van de queryclausule die bij de MUST_NOT hoort, niet in de zoekresultaten kunnen worden opgenomen.
3.SHOULD en MUST_NOT: Wanneer continu gebruikt, is de functie hetzelfde als MUST en MUST_NOT.
4. Wanneer SHOULD en MUST samen worden gebruikt, is het resultaat het zoekresultaat van de MUST-clausule, maar SHOULD kan de sortering beïnvloeden.
5. MOETEN en MOETEN: Geeft de relatie aan tussen "of", en het uiteindelijke zoekresultaat is de vereniging van alle zoekclausules.
6.MUST_NOT en MUST_NOT: zinloos, ophalen zonder resultaat.


Voer het project uit

Op dit punt kun je het project starten om de interfacecode als volgt toe te voegen, bij te werken en te zoeken:


Fouten kunnen als volgt worden gerapporteerd:

Er trad een niet-afgehandelde uitzondering op tijdens het verwerken van het verzoek.
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-modus, FileAccess-toegang, FileShare share, FileOptions-opties)

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

jieba.net Na installatie kun je de Resources-map zien in de packages\jieba.NET-map, die het dictionary en andere databestanden bevat die nodig zijn om jieba.NET uit te voeren, en de eenvoudigste configuratiemethode is om de hele Resources-map te kopiëren naar de map waar de assembly zich bevindt, zodat de ingebouwde standaardconfiguratiewaarden jieba.NET worden gebruikt.

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

JiebaNet moet een configuratiemap toevoegen, de code is als volgt:

De test creëerde 500 nieuwe documenten (gerelateerd aan mijn werkelijke situatie, alleen ter referentie), en de schijf neemt 119KB in beslag, zoals te zien is in de onderstaande figuur:



(Einde)




Vorig:Volg het officiële account en ontvang gratis de "uitnodigingscode"
Volgend:.NET zet de varibinaire string van de database om in een byte[]-array
 Huisbaas| Geplaatst op 29-10-2023 18:10:40 |
Elasticsearch (ES) slaagt er niet in om gegevens naar de foutoplossing te schrijven
https://www.itsvse.com/thread-10568-1-1.html

Elasticsearch ruimt automatisch indexen op om schijfruimte vrij te maken
https://www.itsvse.com/thread-10273-1-1.html

Elasticsearch-7.x gebruikt xpack voor beveiligingsauthenticatie
https://www.itsvse.com/thread-10206-1-1.html

Rol de Elasticsearch-dienst uit met Docker
https://www.itsvse.com/thread-10148-1-1.html

Elasticsearch gebruikt elasticdump om data te back-uppen en te migreren
https://www.itsvse.com/thread-10143-1-1.html

Installeer de standalone versie van elasticsearch 7.10.2 tutorial op Windows
https://www.itsvse.com/thread-9962-1-1.html

Introductie tot de configuratie van Elasticsearch zoekmarkeringen
https://www.itsvse.com/thread-9562-1-1.html

.NET/C# Gebruik Elasticsearch debugging om verzoek- en responsinformatie te bekijken
https://www.itsvse.com/thread-9561-1-1.html

ASP.NET Core Link Trace (5) Jaeger-gegevens blijven in elasticsearch
https://www.itsvse.com/thread-9553-1-1.html

Elasticsearch (ES) repliceert de kloonindex
https://www.itsvse.com/thread-9545-1-1.html

Elasticsearch(ES) cluster gezondheid: gele (6 van 7) status
https://www.itsvse.com/thread-9544-1-1.html

Elasticsearch(ES) cluster gezondheid: rood Faalanalyse
https://www.itsvse.com/thread-9543-1-1.html

Java Geolocatie-informatie in ElasticSearch (geo_point)
https://www.itsvse.com/thread-6444-1-1.html

ElasticsearchParseException[veld moet ofwel [lat], [lon] of [geohash]] zijn
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 installatietutorial voor Elasticsearch
https://www.itsvse.com/thread-6400-1-1.html

Geo-geografische coördinaten van de geavanceerde featurefamilie van Elasticsearch
https://www.itsvse.com/thread-6399-1-1.html

ElasticSearch compound-zoekopdrachten moeten, moeten, must_not gebruikt worden
https://www.itsvse.com/thread-6334-1-1.html

Elasticsearch verwijdert en indexeert alle documentgegevens
https://www.itsvse.com/thread-6321-1-1.html

[Echte gevechten]. net/c# Aanroep elasticsearch zoeken via NEST [met broncode]
https://www.itsvse.com/thread-6294-1-1.html

Oorzaken en oplossingen voor unassigned_shards enkelknoop Elasticsearch
https://www.itsvse.com/thread-6193-1-1.html

Tutorial over het installeren van elasticsearch-analysis-ik in elasticsearch-6.5.2
https://www.itsvse.com/thread-6191-1-1.html

Installeer de elasticsearch-6.5.2 elasticsearch-head plugin
https://www.itsvse.com/thread-6190-1-1.html

Centos 7 installatie en implementatie elasticsearch-6.5.2 tutorial
https://www.itsvse.com/thread-6173-1-1.html

Zoekmachineselectie: Elasticsearch vs Solr
https://www.itsvse.com/thread-6168-1-1.html
 Huisbaas| Geplaatst op 5-11-2023 21:27:45 |
Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com