Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 4068|Отговор: 2

[Източник] [Практичен бой] Използвайте Lucene.Net + Jieba.NET, за да създадете леко търсене в сайта

[Копирай линк]
Публикувано на 29.10.2023 18:05:43 | | | |
Изисквания: Търсенето в пълен текст на сайта е често използвана функция и се прилага на база неяElasticSearchSolrВнедряване и разработка, а сега са пуснати две новиRedisSearchMeiliSearchПървите две са по-тежки, макар че последните две не са толкова тежки, колкото първите две, но все пак трябва да внедрят зависими услуги, тази статия използва Lucene.Net + Jieba.NET, за да изгради леко търсаче на място.

Lucene.Net

Lucene.Net е .NET порт на Lucene и представлява отворен комплект за разработка на търсачки с пълен текст, т.е. не е пълнотекстова търсачка, а архитектура на търсачка с пълен текст, която предоставя пълна машина за заявки и индексираща машина.

Сайт:Входът към хиперлинк е видим.
GitHub адрес:Входът към хиперлинк е видим.

Jieba.NET

Jieba.NET е причастие китайско jieba. .NET версия (C# имплементация). Може да изпълнява функции като сегментиране на думи, анотация на части на речта, извличане на ключови думи и др. за китайски текст и поддържа персонализирани речници.

GitHub адрес:Входът към хиперлинк е видим.

Първо, нека разгледаме визуализациите:




Персонализирайте анализатора

Analyzer, TokenStream, Tokenizer, TokenFilterTokenStream в Lucene TokenStream: Поток, получен след обработка на токенайзера. Този поток съхранява различна информация за сегментацията на думите, която може ефективно да бъде получена чрез TokenStream. Следва процесът на преобразуване на файловия поток в TokenStream. Първо използвайте Tokenizer, за да сегментирате думите, различните токенизатори имат различни tokenzier-и, след като tokenzier-ът е отделен, филтрирайте данните, които са разделени на думи, чрез TokenFilter, като стоп думи. След филтриране, комбинирайте всички данни в TokenStream.

Препратка:

Входът към хиперлинк е видим.
Входът към хиперлинк е видим.
Входът към хиперлинк е видим.


За да се персонализира анализаторът на Lucene според Jieba.NET, първата препратка е следната:



Обърнете се директно към пакета Lucene.Net.Analysis.Common, тъй като Lucene.Net.Analysis.Common разчита на Lucene.Net пакета за автоматично изтегляне.

Създайте нов JiebaTokenizer.cs със следния код:

Създайте нов JiebaAnalyzer.cs със следния код:



Lucene.Net Създаване на нови документи и търсения

Добавяте данни от уебсайт към Lucene редовно или задействано, и Lucene съхранява документа на физически диск чрез анализатора и след това извиква интерфейса за търсене, за да го намери.

Кодът за помощен клас на LuceneHelper е следният:



Съхранение в магазина

Store.YES: Не само ще индексира данните, но и ще ги запази, така че резултатите от търсенето да могат да върнат информация за полето.
Store.NO: Само данните ще бъдат индексирани, данните няма да се запазват, а резултатите от търсенето не могат да получат тази информация за полето.Спестява дисково пространство

Както е показано по-долу:




Тип поле

Типовете полета в Lucene.Net са Int32Field, Int64Field, SingleField, DoubleField, BinaryDocValuesField, NumericDocValuesField, SortedDocValuesField, StringField, TextField, Stored Field, Моля, използвайте подходящия тип данни според вашата ситуация.

TextField срещу StringField

TextField определено ще бъде лексикализиран, StringField няма да извършва лексикален анализ на съдържанието, съхранено в документа, вижте:Входът към хиперлинк е видим.

Търсене на сложни случаи


Има 6 комбинации от следните:

1. ЗАДЪЛЖИТЕЛНО и ЗАДЪЛЖИТЕЛНО: Да се получи пресечната точка на последователни клаузи за заявки.
2. MUST и MUST_NOT: Показва, че резултатите от търсенето на клаузата за заявка, съответстваща на MUST_NOT, не могат да бъдат включени в резултатите от заявката.
3.SHOULD и MUST_NOT: Когато се използва непрекъснато, функцията е същата като MUST и MUST_NOT.
4. Когато SHOULD и MUST се използват заедно, резултатът е резултатът от търсенето на клаузата MUST, но SHOULD може да повлияе на сортирането.
5. ТРЯБВА и ТРЯБВА: Показва връзката между "или", а крайният резултат от търсенето е обединението на всички клаузи за търсене.
6.MUST_NOT и MUST_NOT: безсмислено, извличане без резултати.


Управлявайте проекта

В този момент можете да стартирате проекта, за да добавите, актуализирате и търсите интерфейсния код по следния начин:


Грешките могат да бъдат докладвани по следния начин:

Необработено изключение възникна по време на обработката на заявката.
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 mode, FileAccess Access, FileShare share, опции FileOptions)

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

jieba.net След инсталацията можете да видите директорията Resources в директорията packages\jieba.NET, която съдържа речника и други файлове с данни, необходими за изпълнение на jieba.NET, а най-лесният метод за конфигуриране е да копирате цялата директория Resources в директорията, където се намира асемблерът, така че вградените стандартни конфигурационни стойности да се използват jieba.NET.

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

JiebaNet трябва да добави конфигурационна папка, кодът е следният:

Тестът създаде 500 нови документа (свързани с моята реална ситуация, само за справка), а дискът заема 119KB, както е показано на фигурата по-долу:



(Край)




Предишен:Следвайте официалния акаунт и получете "поканния код" безплатно
Следващ:.NET преобразува варбинарен низ от базата данни в байт[] масив
 Хазяин| Публикувано на 29.10.2023 18:10:40 |
Elasticsearch (ES) не успява да записва данни към решението за грешка
https://www.itsvse.com/thread-10568-1-1.html

Elasticsearch автоматично почиства индексите, за да освободи дисково пространство
https://www.itsvse.com/thread-10273-1-1.html

Elasticsearch-7.x използва xpack за удостоверяване на сигурността
https://www.itsvse.com/thread-10206-1-1.html

Разгръщане на услугата Elasticsearch чрез Docker
https://www.itsvse.com/thread-10148-1-1.html

Elasticsearch използва elasticdump за архивиране и миграция на данни
https://www.itsvse.com/thread-10143-1-1.html

Инсталирайте самостоятелната версия на урока Elasticsearch 7.10.2 на Windows
https://www.itsvse.com/thread-9962-1-1.html

Въведение в конфигурацията на акценти в търсенето в Elasticsearch
https://www.itsvse.com/thread-9562-1-1.html

.NET/C# Използвайте Elasticsearch debugging, за да видите информация за заявки и отговори
https://www.itsvse.com/thread-9561-1-1.html

ASP.NET Core Link Trace (5) Jaeger данните остават в elasticsearch
https://www.itsvse.com/thread-9553-1-1.html

Elasticsearch (ES) репликира индекса на клониране
https://www.itsvse.com/thread-9545-1-1.html

Здраве на клъстера в Elasticsearch(ES): жълто (6 от 7) статус
https://www.itsvse.com/thread-9544-1-1.html

Здравето на клъстера в Elasticsearch(ES): червено Анализ на неуспехи
https://www.itsvse.com/thread-9543-1-1.html

Информация за геолокация в Java в ElasticSearch (geo_point)
https://www.itsvse.com/thread-6444-1-1.html

ElasticsearchParseException[поле трябва да бъде или [lat], [lon] или [geohash]]
https://www.itsvse.com/thread-6442-1-1.html

Тип на elasticsearch-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

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

Геогеографски координати на разширеното семейство функции Elasticsearch
https://www.itsvse.com/thread-6399-1-1.html

ElasticSearch компаунд заявки трябва, трябва must_not да се използват
https://www.itsvse.com/thread-6334-1-1.html

Elasticsearch изтрива и индексира всички документни данни
https://www.itsvse.com/thread-6321-1-1.html

[Истински бой]. net/c# Извикай elasticsearch търсене чрез NEST [с изходен код]
https://www.itsvse.com/thread-6294-1-1.html

Причини и решения за unassigned_shards Elasticsearch с един възел
https://www.itsvse.com/thread-6193-1-1.html

Урок за инсталиране на elasticsearch-analysis-ik в elasticsearch-6.5.2
https://www.itsvse.com/thread-6191-1-1.html

Инсталирайте elasticsearch-6.5.2 плъгина elasticsearch-head
https://www.itsvse.com/thread-6190-1-1.html

Tutorial за инсталация и внедряване на Centos 7 elasticsearch-6.5.2
https://www.itsvse.com/thread-6173-1-1.html

Избор на търсачка: Elasticsearch срещу Solr
https://www.itsvse.com/thread-6168-1-1.html
 Хазяин| Публикувано на 2023-11-5 21:27:45 |
Тестов адрес за търсене:https://www.itsvse.com/blog_xzz.html
Отричане:
Целият софтуер, програмни материали или статии, публикувани от Code Farmer Network, са само за учебни и изследователски цели; Горното съдържание не трябва да се използва за търговски или незаконни цели, в противен случай потребителите ще понесат всички последствия. Информацията на този сайт идва от интернет, а споровете за авторски права нямат нищо общо с този сайт. Трябва напълно да изтриете горното съдържание от компютъра си в рамките на 24 часа след изтеглянето. Ако ви харесва програмата, моля, подкрепете оригинален софтуер, купете регистрация и получете по-добри услуги. Ако има нарушение, моля, свържете се с нас по имейл.

Mail To:help@itsvse.com