이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 4068|회답: 2

[출처] [실전 전투] Lucene.Net + Jieba.NET 사용해 가벼운 현장 내 수색을 구축하세요

[링크 복사]
2023-10-29 18:05:43에 게시됨 | | | |
요구사항: 사이트에서 전체 텍스트 검색은 일반적으로 사용되는 기능이며, 이를 기반으로 하는 것이 일반적입니다탄성 검색솔르배포와 개발, 그리고 이제 두 개의 새로운 제품이 출시되었습니다레디서치메일리서치검색 엔진, 처음 두 개는 더 무겁지만, 마지막 두 개는 처음 두 개만큼 무겁지 않지만 여전히 의존 서비스를 배포해야 합니다. 이 글에서는 Lucene.Net + Jieba.NET 를 사용하여 가벼운 온사이트 검색을 구축합니다.

Lucene.Net

Lucene.Net 는 Lucene의 .NET 포트로, 오픈 소스 전체 텍스트 검색 엔진 개발 키트입니다. 즉, 완전한 텍스트 검색 엔진이 아니라 완전한 쿼리 엔진과 색인 엔진을 제공하는 전체 텍스트 검색 엔진 아키텍처입니다.

사이트:하이퍼링크 로그인이 보입니다.
GitHub 주소:하이퍼링크 로그인이 보입니다.

Jieba.NET

Jieba.NET 는 중국어 계파의 분사입니다. .NET 버전 (C# 구현). 중국어 텍스트에 대해 단어 분할, 품사 주석, 키워드 추출 등의 기능을 수행할 수 있으며, 맞춤형 사전도 지원합니다.

GitHub 주소:하이퍼링크 로그인이 보입니다.

먼저, 렌더링을 살펴보겠습니다:




분석기 커스터마이즈하기

Lucene 내 Analyzer, TokenStream, TokenFilterTokenStream: 토크나이저가 처리된 후에 얻는 스트림입니다. 이 스트림은 TokenStream을 통해 효과적으로 얻을 수 있는 워드 세분화에 관한 다양한 정보를 저장합니다. 다음은 파일 스트림을 TokenStream으로 변환하는 과정입니다. 먼저 Tokenizer를 사용해 단어를 세분화합니다. 각 토큰제이저는 서로 다른 토큰지어를 가지고 있습니다. 토큰지어가 분리된 후, 스톱워드와 같은 단어로 나누어진 데이터를 TokenFilter를 통해 필터링합니다. 필터링 후 모든 데이터를 TokenStream으로 결합하세요.

참조:

하이퍼링크 로그인이 보입니다.
하이퍼링크 로그인이 보입니다.
하이퍼링크 로그인이 보입니다.


루센 분석기를 Jieba.NET 에 따라 맞춤화하기 위해 첫 번째 참고 자료는 다음과 같습니다:



Lucene.Net.Analysis.Common 패키지를 직접 참조하시기 바랍니다. Lucene.Net.Analysis.Common은 Lucene.Net 패키지에 의존하여 자동으로 다운로드합니다.

다음 코드로 새 JiebaTokenizer.cs을 생성하세요:

다음 코드로 새 JiebaAnalyzer.cs을 생성하세요:



Lucene.Net 새 문서 생성 및 검색

웹사이트에서 데이터를 정기적으로 또는 트리거된 방식으로 루센에 추가하면, 루센은 분석기를 통해 문서를 물리적 디스크에 저장한 후 검색 인터페이스를 호출해 문서를 찾습니다.

LuceneHelper 도움말 클래스 코드는 다음과 같습니다:



저장 공간

Store.YES: 데이터를 인덱싱할 뿐만 아니라 데이터를 저장하여 검색 결과가 필드 정보를 반환할 수 있도록 합니다.
Store.NO: 데이터만 인덱싱되며, 데이터는 저장되지 않고, 검색 결과는 이 필드 정보를 얻을 수 없습니다.디스크 공간 절약

아래에 나와 있습니다:




필드 필드 유형

Lucene.Net 의 필드 유형은 Int32Field, Int64Field, SingleField, DoubleField, BinaryDocValuesField, NumericDocValuesField, SortedDocValuesField, StringField, TextField, StoredField, 상황에 맞는 적절한 데이터 타입을 사용해 주세요.

텍스트필드 vs. 스트링필드

TextField는 반드시 어휘화될 것이며, StringField는 문서에 저장된 내용에 대한 어휘 분석을 수행하지 않습니다. 참고:하이퍼링크 로그인이 보입니다.

복합물 탐색 발생


다음 조합은 6가지가 있습니다:

1. MUST and MUST: 연속 쿼리 절의 교차점을 구합니다.
2. MUST 및 MUST_NOT: MUST_NOT에 해당하는 쿼리 절의 검색 결과가 쿼리 결과에 포함될 수 없음을 나타냅니다.
3. SHOULD와 MUST_NOT: 연속적으로 사용할 때, 이 기능은 MUST와 MUST_NOT와 동일합니다.
4. SHOULDY와 MUST를 함께 사용할 경우, 결과는 MUST 절의 검색 결과이지만, SHOULD는 정렬에 영향을 줄 수 있습니다.
5. SHOULD 및 SHOULD: "또는 "또는 "간의 관계를 나타내며, 최종 검색 결과는 모든 검색 절의 합집합입니다.
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(문자열 fullPath, FileMode 모드, FileAccess 접근, FileShare share, FileOptions 옵션)

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

jieba.net 설치 후에는 packages\jieba.NET 디렉터리의 Resources 디렉터리를 볼 수 있는데, 여기에는 jieba.NET 실행에 필요한 사전과 기타 데이터 파일이 포함되어 있습니다. 가장 쉬운 구성 방법은 어셈블리가 위치한 디렉터리에 전체 Resources 디렉터리를 복사하여 기본 설정 값을 jieba.NET 사용하는 것입니다.

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

JiebaNet은 구성 폴더를 추가해야 하며, 코드는 다음과 같습니다:

이 테스트는 500개의 새 문서를 생성했는데(참고용으로는 제 실제 상황과 관련된), 디스크는 아래 그림과 같이 119KB를 차지합니다:



(끝)




이전의:공식 계정을 팔로우하고 무료로 "초대 코드"를 받으세요
다음:.NET은 데이터베이스의 varbinary 문자열을 바이트[] 배열로 변환합니다
 집주인| 2023-10-29 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

Docker를 사용하여 Elasticsearch 서비스를 배포하세요
https://www.itsvse.com/thread-10148-1-1.html

Elasticsearch는 elasticdump를 사용하여 데이터를 백업하고 마이그레이션합니다
https://www.itsvse.com/thread-10143-1-1.html

Windows에서 elasticsearch 7.10.2 튜토리얼의 독립 실행형 버전을 설치하세요
https://www.itsvse.com/thread-9962-1-1.html

Elasticsearch 검색 하이라이트 구성 소개
https://www.itsvse.com/thread-9562-1-1.html

.NET/C# Elasticsearch 디버깅을 사용하여 요청 및 응답 정보를 확인하세요
https://www.itsvse.com/thread-9561-1-1.html

ASP.NET 코어 링크 트레이스 (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) 클러스터 건강 상태: 노란색 (7개 중 6개) 상태
https://www.itsvse.com/thread-9544-1-1.html

Elasticsearch(ES) 클러스터 건강 상태: 빨간색 고장 분석
https://www.itsvse.com/thread-9543-1-1.html

ElasticSearch (geo_point)에서의 Java 위치 정보
https://www.itsvse.com/thread-6444-1-1.html

ElasticsearchParseException[필드는 [lat], [lon] 또는 [geohash]이어야 합니다.
https://www.itsvse.com/thread-6442-1-1.html

탄력탐색-매핑필드 유형
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

【실용 행동】Elasticsearch용 Kibana 설치 튜토리얼
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# NEST를 통한 elasticsearch 호출 [소스 코드 포함]
https://www.itsvse.com/thread-6294-1-1.html

단일 노드 탄성탐색unassigned_shards 원인과 해결책
https://www.itsvse.com/thread-6193-1-1.html

elasticsearch-6.5.2에서 elasticsearch-analysis-ik 설치 튜토리얼
https://www.itsvse.com/thread-6191-1-1.html

elasticsearch-6.5.2 elasticsearch-head 플러그인을 설치하세요
https://www.itsvse.com/thread-6190-1-1.html

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에 게시됨 |
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com