Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 4068|Antwort: 2

[Quelle] [Praktischer Kampf] Nutze Lucene.Net + Jieba.NET, um eine leichte Insite-Suche zu erstellen.

[Link kopieren]
Veröffentlicht am 29.10.2023, 18:05:43 | | | |
Anforderungen: Die Volltextsuche auf der Seite ist eine häufig verwendete Funktion und wird häufig darauf basierend eingesetztElasticSearchSolrEinführung und Entwicklung, und nun wurden zwei neue veröffentlichtRedisSearchMeiliSearchSuchmaschinen, die ersten beiden sind schwerer, obwohl die letzten beiden nicht so umfangreich sind wie die ersten beiden, müssen aber dennoch abhängige Dienste bereitgestellt werden; dieser Artikel verwendet Lucene.Net + Jieba.NET, um eine leichte Onsite-Suche zu erstellen.

Lucene.Net

Lucene.Net ist ein .NET-Port von Lucene und ein Open-Source-Volltext-Suchmaschinenentwicklungsset, d. h. es ist keine vollständige Volltextsuchmaschine, sondern eine Volltext-Suchmaschinenarchitektur, die eine vollständige Abfrage- und Indexierungsmaschine bereitstellt.

Platz:Der Hyperlink-Login ist sichtbar.
GitHub-Adresse:Der Hyperlink-Login ist sichtbar.

Jieba.NET

Jieba.NET ist ein Partizip chinesisch jieba. .NET-Version (C#-Implementierung). Es kann Funktionen wie Wortsegmentierung, Wortartannotation, Schlüsselwortextraktion usw. für chinesischen Text ausführen und unterstützt benutzerdefinierte Wörterbücher.

GitHub-Adresse:Der Hyperlink-Login ist sichtbar.

Schauen wir uns zunächst die Renderings an:




Anpassen Sie den Analysator

Analyzer, TokenStream, Tokenizer, TokenFilterTokenStream in Lucene TokenStream: Ein Stream, der nach der Verarbeitung des Tokenizers erhalten wird. Dieser Strom speichert verschiedene Informationen zur Wortsegmentierung, die effektiv über TokenStream erhalten werden können. Im Folgenden wird der Dateistrom in einen TokenStream umgewandelt: Zuerst verwendet man den Tokenizer, um die Wörter zu segmentieren, verschiedene Tokenizer haben unterschiedliche Tokenizer; nachdem der Tokenizer getrennt wurde, filtert man die in Worte aufgeteilten Daten durch den TokenFilter, wie zum Beispiel Stopwörter. Nach dem Filtern werden alle Daten zu einem TokenStream zusammengefasst.

Referenz:

Der Hyperlink-Login ist sichtbar.
Der Hyperlink-Login ist sichtbar.
Der Hyperlink-Login ist sichtbar.


Um den Lucene-Analysator basierend auf Jieba.NET anzupassen, lautet die erste Referenz wie folgt:



Beziehen Sie sich direkt auf das Lucene.Net.Analysis.Common-Paket, da Lucene.Net.Analysis.Common darauf angewiesen ist, dass das Lucene.Net-Paket automatisch heruntergeladen wird.

Erstellen Sie ein neues JiebaTokenizer.cs mit folgendem Code:

Erstellen Sie ein neues JiebaAnalyzer.cs mit folgendem Code:



Lucene.Net Erstellen Sie neue Dokumente und Suchanfragen

Fügen Sie regelmäßig oder getriggert Daten von einer Website zu Lucene hinzu, und Lucene speichert das Dokument auf einer physischen Festplatte über den Analyzer und ruft dann die Suchoberfläche auf, um es zu finden.

Der LuceneHelper-Hilfeklassencode ist wie folgt:



Lagerlagerung

Store.YES: Es wird nicht nur die Daten indizieren, sondern auch gespeichert, sodass die Suchergebnisse Feldinformationen zurückgeben können.
Store.NO: Nur die Daten werden indexiert, die Daten werden nicht gespeichert, und die Suchergebnisse können diese Feldinformationen nicht erhalten.Spart Festplattenspeicher

Wie unten gezeigt:




Feldfeldtyp

Die Feldtypen in Lucene.Net sind Int32Field, Int64Field, SingleField, DoubleField, BinaryDocValuesField, NumericDocValuesField, SortedDocValuesField, StringField, TextField, StoredField, Bitte verwenden Sie den passenden Datentyp entsprechend Ihrer Situation.

TextField vs. StringField

TextField wird definitiv lexikalisiert, StringField wird keine lexikalische Analyse der im Dokument gespeicherten Inhalte durchführen, siehe Folgendes:Der Hyperlink-Login ist sichtbar.

Auftretende zusammengesetzte Suche


Es gibt 6 Kombinationen der folgenden Varianten:

1. MUST und MUST: Erhalten Sie die Schnittmenge aufeinanderfolgender Abfrageklauseln.
2. MUST und MUST_NOT: Gibt an, dass die Suchergebnisse der Abfrageklausel, die dem MUST_NOT entspricht, nicht in die Abfrageergebnisse aufgenommen werden können.
3.SHOULD und MUST_NOT: Bei kontinuierlicher Anwendung ist die Funktion identisch mit MUST und MUST_NOT.
4. Wenn SHOULD und MUST zusammen verwendet werden, ist das Ergebnis das Suchergebnis der MUST-Klausel, aber SHOULD kann die Sortierung beeinflussen.
5. SOLLTE und SOLLTE: Zeigt die Beziehung zwischen "oder" an, und das endgültige Suchergebnis ist die Vereinigung aller Suchklauseln.
6.MUST_NOT und MUST_NOT: bedeutungslos, Abruf ohne Ergebnis.


Führe das Projekt durch

An diesem Punkt können Sie das Projekt starten, um den Interface-Code wie folgt hinzuzufügen, zu aktualisieren und danach zu suchen:


Fehler können wie folgt gemeldet werden:

Während der Bearbeitung der Anfrage trat eine unbehandelte Ausnahme auf.
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, Dateimodus, Dateizugriffszugriff, Dateifreigabe, Dateifreigabe, Dateioptionen)

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

jieba.net Nach der Installation kann man das Resources jieba.NET-Verzeichnis im packages\-Verzeichnis sehen, das das Wörterbuch und andere Datendateien enthält, die zum Ausführen jieba.NET benötigt werden, und die einfachste Konfigurationsmethode ist, das gesamte Resources-Verzeichnis in das Verzeichnis zu kopieren, in dem sich die Assembly befindet, sodass die eingebauten Standardkonfigurationswerte jieba.NET verwendet werden.

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

JiebaNet muss einen Konfigurationsordner hinzufügen, der Code ist wie folgt:

Der Test erstellte 500 neue Dokumente (bezogen auf meine tatsächliche Situation, nur zur Referenz), und die Festplatte nimmt 119KB ein, wie in der untenstehenden Abbildung gezeigt:



(Ende)




Vorhergehend:Folgen Sie dem offiziellen Account und erhalten Sie den "Einladungscode" kostenlos
Nächster:.NET wandelt die varibinäre Zeichenkette der Datenbank in ein Byte[]-Array um
 Vermieter| Veröffentlicht am 29.10.2023, 18:10:40 |
Elasticsearch (ES) schreibt keine Daten in die Fehlerlösung.
https://www.itsvse.com/thread-10568-1-1.html

Elasticsearch bereinigt automatisch Indizes, um Speicherplatz freizumachen
https://www.itsvse.com/thread-10273-1-1.html

Elasticsearch-7.x verwendet xpack für die Sicherheitsauthentifizierung
https://www.itsvse.com/thread-10206-1-1.html

Bereitstellen Sie den Elasticsearch-Dienst mit Docker bereit
https://www.itsvse.com/thread-10148-1-1.html

Elasticsearch verwendet Elasticdump, um Daten zu sichern und zu migrieren
https://www.itsvse.com/thread-10143-1-1.html

Installiere die eigenständige Version des Tutorials Elasticsearch 7.10.2 unter Windows
https://www.itsvse.com/thread-9962-1-1.html

Einführung in die Konfiguration der Such-Highlight-Konfiguration von Elasticsearch
https://www.itsvse.com/thread-9562-1-1.html

.NET/C# Verwenden Sie Elasticsearch-Debugging, um Anfrage- und Antwortinformationen anzuzeigen
https://www.itsvse.com/thread-9561-1-1.html

ASP.NET Core Link Trace (5) Jaeger-Daten werden in der Elastizitätssuche erhalten
https://www.itsvse.com/thread-9553-1-1.html

Elasticsearch (ES) repliziert den Klonindex
https://www.itsvse.com/thread-9545-1-1.html

Gesundheit des Elasticsearch(ES)-Clusters: gelber (6 von 7) Status
https://www.itsvse.com/thread-9544-1-1.html

Elasticsearch(ES)-Cluster-Gesundheit: rot Ausfallanalyse
https://www.itsvse.com/thread-9543-1-1.html

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

ElasticsearchParseException[field muss entweder [lat], [lon] oder [geohash]] sein
https://www.itsvse.com/thread-6442-1-1.html

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

【Praktische Aktion】Kibana Installationsanleitung für Elasticsearch
https://www.itsvse.com/thread-6400-1-1.html

Geogeographische Koordinaten der erweiterten Feature-Familie von Elasticsearch
https://www.itsvse.com/thread-6399-1-1.html

ElasticSearch-Compound-Abfragen müssen und sollten must_not verwendet werden
https://www.itsvse.com/thread-6334-1-1.html

Elasticsearch löscht und indexiert alle Dokumentdaten
https://www.itsvse.com/thread-6321-1-1.html

[Tatsächlicher Kampf]. net/c# Ruf die Elasticsearch-Suche über NEST [mit Quellcode] auf
https://www.itsvse.com/thread-6294-1-1.html

Ursachen und Lösungen für unassigned_shards Einzelknoten-Elasticsearch
https://www.itsvse.com/thread-6193-1-1.html

Tutorial zur Installation von elasticsearch-analysis-ik in elasticsearch-6.5.2
https://www.itsvse.com/thread-6191-1-1.html

Installieren Sie das elasticsearch-6.5.2 elasticsearch-head-Plugin
https://www.itsvse.com/thread-6190-1-1.html

Centos 7 Installation und Bereitstellung elasticsearch-6.5.2 Tutorial
https://www.itsvse.com/thread-6173-1-1.html

Suchmaschinenauswahl: Elasticsearch vs Solr
https://www.itsvse.com/thread-6168-1-1.html
 Vermieter| Veröffentlicht am 5.11.2023, 21:27:45 |
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com