Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 4068|Odpowiedź: 2

[Źródło] [Praktyczna walka] Użyj Lucene.Net + Jieba.NET do zbudowania lekkiego wyszukiwania na miejscu

[Skopiuj link]
Opublikowano 2023-10-29 18:05:43 | | | |
Wymagania: Wyszukiwanie w pełnym tekstie na stronie jest powszechnie używaną funkcją i jest powszechnie wykorzystywane właśnie na jej podstawieElasticSearchSolrWdrożenie i rozwój, a teraz wydano dwa noweRedisSearchMeiliSearchWyszukiwarka, pierwsze dwie są cięższe, choć ostatnie dwa nie są tak wymagające jak pierwsze, ale nadal wymagają wdrożenia usług zależnych, ten artykuł wykorzystuje Lucene.Net + Jieba.NET do zbudowania lekkiego wyszukiwania na stronie.

Lucene.Net

Lucene.Net jest portem .NET Lucene i jest open-source pełnotekstowym zestawem do tworzenia wyszukiwarek, czyli nie jest pełnotekstową wyszukiwarką, lecz architekturą pełnotekstową oferującą kompletną wyszukiwarkę i indeksację.

Miejsce:Logowanie do linku jest widoczne.
Adres GitHub:Logowanie do linku jest widoczne.

Jieba.NET

Jieba.NET to chińska jieba z imiesłem. .NET (implementacja w C#). Może wykonywać funkcje takie jak segmentacja słów, adnotacja części mowy, ekstrakcja słów kluczowych itp. dla tekstu chińskiego oraz wspiera niestandardowe słowniki.

Adres GitHub:Logowanie do linku jest widoczne.

Najpierw przyjrzyjmy się wizualizacjom:




Dostosuj analizator

Analyzer, TokenStream, Tokenizer, TokenFilterTokenStream w Lucene TokenStream: Strumień uzyskany po przetworzeniu tokenizera. Ten strumień przechowuje różne informacje o segmentacji słów, które można skutecznie uzyskać za pomocą TokenStream. Poniżej opisano proces konwersji strumienia plików na TokenStream. Najpierw użyj Tokenizera do segmentacji słów, różne tokenizery mają różne tokenziery, po oddzieleniu tokenziera przefiltruj dane podzielone na słowa przez TokenFilter, takie jak stop. Po filtrowaniu połącz wszystkie dane w TokenStream.

Odniesienie:

Logowanie do linku jest widoczne.
Logowanie do linku jest widoczne.
Logowanie do linku jest widoczne.


Aby dostosować analizator Lucene na podstawie Jieba.NET, pierwsze odniesienie jest następujące:



Bezpośrednio odwołaj się do pakietu Lucene.Net.Analysis.Common, ponieważ Lucene.Net.Analysis.Common polega na automatycznym pobieraniu pakietu Lucene.Net.

Stwórz nowy JiebaTokenizer.cs z następującym kodem:

Stwórz nowy JiebaAnalyzer.cs z następującym kodem:



Lucene.Net Tworzenie nowych dokumentów i wyszukiwań

Dodaj dane ze strony internetowej do Lucene regularnie lub wyzwalano, a Lucene przechowuje dokument na fizycznym dysku przez analizator, a następnie wywołuje interfejs wyszukiwania, aby go znaleźć.

Kod klasy pomocy LuceneHelper wygląda następująco:



Przechowywanie w sklepie

Store.YES: Nie tylko indeksuje dane, ale także je zapisuje, dzięki czemu wyniki wyszukiwania mogą zwracać informacje o polach.
Store.NO: Indeksowane będą tylko dane, a dane nie będą zapisywane, a wyniki wyszukiwania nie mogą uzyskać informacji o tym polu.Oszczędza miejsce na dysku

Jak pokazano poniżej:




Typ pola pola

Typy pól w Lucene.Net to: Int32Field, Int64Field, SingleField, DoubleField, BinaryDocValuesField, NumericDocValuesField, SortedDocValuesField, StringField, TextField, StoredField, Prosimy o użycie odpowiedniego typu danych dostosowanego do Twojej sytuacji.

TextField vs. StringField

TextField na pewno zostanie leksykalizowany, StringField nie wykona analizy leksykalnej treści zapisanej w doc, zobacz:Logowanie do linku jest widoczne.

Wykonaj przeszukanie złożone


Istnieje 6 kombinacji następujących cech:

1. MUST i MUST: Uzyskaj przecięcie kolejnych klauzul zapytań.
2. MUST i MUST_NOT: Oznacza, że wyniki wyszukiwania klauzuli zapytania odpowiadającej MUST_NOT nie mogą być uwzględnione w wynikach zapytania.
3. SHOULD i MUST_NOT: Przy ciągłym użyciu funkcja jest taka sama jak MUST i MUST_NOT.
4. Gdy SHOULD i MUST są używane razem, wynik jest wynikiem wyszukiwania klauzuli MUST, ale SHOULD może wpłynąć na sortowanie.
5. POWINNO i POWINNO: Wskazuje relację między "lub", a ostatecznym wynikiem wyszukiwania jest suma wszystkich klauzul wyszukiwania.
6.MUST_NOT i MUST_NOT: bezsensowne, odzyskiwanie bez rezultatów.


Prowadź projekt

W tym momencie możesz rozpocząć projekt, aby dodać, zaktualizować i wyszukać kod interfejsu w następujący sposób:


Błędy mogą być zgłaszane w następujący sposób:

Podczas przetwarzania żądania wystąpił nieobsłużony wyjątek.
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(ciąg fullPath, tryb FileMode, dostęp do FileAccess, udostępnianie plików, opcje FileOptions)

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

jieba.net Po instalacji możesz zobaczyć katalog Resources w katalogu pakiety\jieba.NET, który zawiera słownik i inne pliki danych potrzebne do uruchomienia jieba.NET, a najprostszą metodą konfiguracji jest skopiowanie całego katalogu Resources do katalogu, w którym znajduje się asemble, tak aby wbudowane domyślne wartości konfiguracyjne były używane jieba.NET.

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

JiebaNet musi dodać folder konfiguracyjny, kod wygląda następująco:

Test stworzył 500 nowych dokumentów (związanych z moją faktyczną sytuacją, tylko dla odniesienia), a dysk zajmuje 119KB, jak pokazano na poniższym rysunku:



(Koniec)




Poprzedni:Obserwuj oficjalne konto i pobierz "kod zaproszenia" za darmo
Następny:.NET konwertuje ciąg warbinaryjny bazy danych na tablicę bajt[]
 Ziemianin| Opublikowano 2023-10-29 o 18:10:40 |
Elasticsearch (ES) nie zapisuje danych do rozwiązania błędu
https://www.itsvse.com/thread-10568-1-1.html

Elasticsearch automatycznie czyści indeksy, aby zwolnić miejsce na dysku
https://www.itsvse.com/thread-10273-1-1.html

Elasticsearch-7.x wykorzystuje xpack do uwierzytelniania bezpieczeństwa
https://www.itsvse.com/thread-10206-1-1.html

Wdrożenie usługi Elasticsearch za pomocą Dockera
https://www.itsvse.com/thread-10148-1-1.html

Elasticsearch wykorzystuje elasticdump do tworzenia kopii zapasowych i migracji danych
https://www.itsvse.com/thread-10143-1-1.html

Zainstaluj samodzielną wersję tutorialu elasticsearch 7.10.2 na Windowsie
https://www.itsvse.com/thread-9962-1-1.html

Wprowadzenie do konfiguracji podświetleń wyszukiwania w Elasticsearch
https://www.itsvse.com/thread-9562-1-1.html

.NET/C# Użyj debugowania Elasticsearch, aby zobaczyć informacje o żądaniach i odpowiedziach
https://www.itsvse.com/thread-9561-1-1.html

ASP.NET Core Link Trace (5) Dane Jaegera pozostają w elasticsearch
https://www.itsvse.com/thread-9553-1-1.html

Elasticsearch (ES) replikuje indeks klonów
https://www.itsvse.com/thread-9545-1-1.html

Zdrowie klastra Elasticsearch(ES): żółty (6 z 7)
https://www.itsvse.com/thread-9544-1-1.html

Zdrowie klastra Elasticsearch(ES): czerwony Analiza awarii
https://www.itsvse.com/thread-9543-1-1.html

Informacje o geolokalizacji Java w ElasticSearch (geo_point)
https://www.itsvse.com/thread-6444-1-1.html

ElasticsearchParseException[field musi być albo [lat], [lon] lub [geohash]]
https://www.itsvse.com/thread-6442-1-1.html

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

【Praktyczne działanie】Tutorial instalacji Kibana dla Elasticsearch
https://www.itsvse.com/thread-6400-1-1.html

Współrzędne geograficzne rodziny zaawansowanych cech Elasticsearch
https://www.itsvse.com/thread-6399-1-1.html

Zapytania złożone ElasticSearch muszą, powinny must_not używać
https://www.itsvse.com/thread-6334-1-1.html

Elasticsearch usuwa i indeksuje wszystkie dane dokumentów
https://www.itsvse.com/thread-6321-1-1.html

[Rzeczywista walka]. net/c# Wołanie wyszukiwania elasticsearch przez NEST [z kodem źródłowym]
https://www.itsvse.com/thread-6294-1-1.html

Przyczyny i rozwiązania unassigned_shards pojedynczego węzła Elasticsearch
https://www.itsvse.com/thread-6193-1-1.html

Poradnik instalowania elasticsearch-analysis-ik w elasticsearch-6.5.2
https://www.itsvse.com/thread-6191-1-1.html

Zainstaluj wtyczkę elasticsearch-6.5.2 elasticsearch-head
https://www.itsvse.com/thread-6190-1-1.html

Instrukcja instalacji i wdrażania Centos 7 elasticsearch-6.5.2
https://www.itsvse.com/thread-6173-1-1.html

Wybór wyszukiwarek: Elasticsearch vs Solr
https://www.itsvse.com/thread-6168-1-1.html
 Ziemianin| Opublikowano 2023-11-5 21:27:45 |
Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com