Lucene 구성 요소 및 개요
주의 사항
이 기능은 NCache Enterprise 과 전문 서비스 에디션.
Lucene은 사용자 요구 사항에 따라 광범위한 텍스트 검색 기술을 제공하는 강력하고 효율적인 검색 엔진입니다. Lucene은 사용자에게 주어진 선택이 어떤 기준으로도 차별되지 않기 때문에 다른 어떤 텍스트 검색 엔진보다 훨씬 뛰어납니다. 강력하고 강력한 검색 알고리즘을 가지고 있으며 검색을 위한 광범위한 쿼리를 지원합니다.
Lucene 응용 프로그램은 특정 경로에서 검색이 수행되는 첫 번째 인덱싱 데이터로 주로 구성되는 기본 주기를 가지고 있습니다. 추가된 데이터는 사용자의 필요에 따라 모든 텍스트 형식이 될 수 있습니다. 데이터가 인덱싱되고 토큰화된 다음 쿼리를 사용하여 이러한 토큰에 대해 검색이 수행됩니다. 이것은 먼저 데이터를 처리한 다음 검색을 포함하는 양방향 프로세스입니다.
다음 다이어그램은 기본 Lucene 모델 작업 흐름을 보여줍니다.
루신의 구성요소
텍스트 검색에 Lucene을 사용하기 위해 Lucene에서 사용하는 주요 API를 자세히 살펴보겠습니다. Lucene에 대한 완전한 안내서는 아닙니다. 그러나 기본 및 급진적인 Lucene API를 이해하는 데 도움이 됩니다.
다음은 Lucene 기반 솔루션을 구축하는 데 사용되는 기본 API입니다.
예배 규칙서: 인덱스가 형성되는 위치를 정의하는 것은 기본 클래스입니다.
문서: 인덱싱할 데이터가 포함되어 있습니다.
분석기 : 데이터가 인덱싱되는 동안 분석기는 데이터에 대해 토큰화 및 검색이 수행되는 기준을 결정합니다. 마찬가지로 토큰화와 관련된 데이터를 쿼리하는 동안 사용됩니다.
색인 작성기: 미리 작성된 문서는 이 클래스를 사용하여 디렉토리에 전달됩니다. 한 번에 하나의 indexWriter를 열 수 있습니다.
인덱스 리더: 인덱스가 생성된 모든 디렉토리에는 인덱스에서 데이터를 읽는 역할을 하는 리더가 열려 있을 수 있습니다.
인덱스 검색기: 검색자는 판독기를 통해 데이터를 쿼리할 책임이 있습니다.
다음은 이러한 클래스에 대한 자세한 설명입니다.
명부 담당
이 클래스는 Lucene 인덱스가 저장되는 위치를 나타냅니다. 추가 작업을 수행할 수 있도록 인덱스를 유지 관리하기 위해 디렉터리를 열어야 합니다.
문서
문서는 모음입니다. 분야. 이러한 필드에는 필드 이름에 대한 값으로 텍스트 데이터가 포함됩니다. 값은 인덱싱하고 나중에 검색할 수 있도록 하려는 데이터입니다. 모든 필드에서 사용자는 해당 필드 값을 분석할지 여부를 지정할 수 있습니다. 문서는 기본적으로 필드가 다음에 대해 검색될 때 반환되는 검색 단위입니다. searchterm
.
분석기
Analyzer
앞서 논의한 바와 같이 제공된 유형에 따라 데이터를 더 작은 청크로 토큰화하는 주요 책임이 있습니다. 기본적으로 문서의 필드를 인덱싱 가능한 토큰으로 구문 분석합니다. 분석기가 데이터를 분석하는 방식은 데이터를 검색하는 사용자의 능력에 영향을 미칩니다. 다음은 XNUMX가지 기본적이고 가장 일반적으로 사용되는 Lucene 분석기입니다.
공백 분석기
이 분석기는 이름에서 알 수 있듯이 공백에 따라 데이터를 분석합니다. 또한 이 분석기는 단어의 대소문자를 유지합니다. 주로 포함하는 경우에 따라 데이터의 토큰화를 수행합니다.
표준 분석기
불용어에 따라 데이터를 분석하고 단순 분석기와 같이 소문자로 된 데이터에 대한 토큰화를 수행합니다. 또한 URL과 이메일 주소를 인식하고 그에 따라 토큰을 생성합니다. 이 기능으로 인해 가장 지능적인 분석기로 간주되어 가장 일반적으로 사용됩니다.
단순 분석기
데이터를 소문자로 인덱싱하고 문자가 아닌 것을 기준으로 분할합니다. URL 및 기호 또는 숫자와 같은 문자가 아닌 문자는 색인화하지 않습니다.
분석기 중지
중지 분석기는 비문자 문자와 중지 단어에 따라 데이터에서 토큰을 생성합니다. 중지 단어는 분석기가 검색과 관련이 없는 것으로 간주하므로 인덱싱하는 동안 무시되어야 하는 단어입니다. 또한 중지 분석기는 URL 및 기호 또는 숫자와 같은 문자가 아닌 문자를 색인화하지 않습니다.
아래 문장을 고려하십시오.
이것은 "DistributedLucene"에 대한 튜토리얼입니다. alachisoft. com.
공백 분석기 | 분석기 중지 | 단순 분석기 | 표준 분석기 |
---|---|---|---|
이 is a 지도 시간 for “분산루신” at alachisoft. com. |
지도 시간 분산 루신 alachisoft COM |
이 is a 지도 시간 for "분산 루신" alachisoft COM |
지도 시간 분산 루신 alachisoft.COM |
색인 작성기
문서를 추가하고 색인을 생성하려면 다음이 필요합니다. IndexWriter
. 작가는 다음이 필요합니다.
유효한 Lucene 디렉토리: 문서가 인덱싱될 위치
Analyzer: 작성자가 그에 따라 데이터를 분석하도록 합니다.
Writer는 인덱싱된 데이터에 대한 분석기에 해당하고 데이터를 저장하기 위해 Directory에 결과를 추가합니다. 정확히는 데이터에 대해 모든 쓰기 작업이 올바르게 수행된 후 저장하는 것은 라이터가 담당합니다. 작성기에서 수행할 수 있는 일련의 작업이 있으며 작성기는 모든 작업 후에 삭제됩니다.
인덱스 리더
Lucene의 주요 기능은 이전에 추가된 데이터를 검색하는 것입니다. 이를 위해 우리는 IndexReader
디렉토리에서 데이터를 읽는다. 문서가 업데이트될 때마다 IndexReader
다시 초기화해야 합니다. 다음 중 하나를 만들 수 있습니다. IndexReader
또는 인스턴스를 가져옵니다. IndexReader
인사말 IndexWriter
. 색인된 모든 문서가 있는 판독기에 디렉토리 인스턴스를 전달합니다.
인덱스 검색기
IndexSearcher
의 인스턴스로 초기화됩니다.
IndexReader
사용자로부터 쿼리를 받아 그에 따라 데이터를 검색합니다. 쿼리는 Lucene에서 제공하는 추상 클래스이며 수행할 검색의 범위와 유형을 정의하는 데 사용됩니다. 검색 시 다음과 같이 반환됩니다. TopDocs
쿼리로 검색한 결과입니다.
이제 쿼리가 생성되었으므로 다음을 사용하여 쿼리를 구문 분석합니다. QueryParser
. Analyzer는 해당 분석기에 따라 쿼리를 구문 분석하는 queryParser로 전달됩니다. 또한 문서에 추가된 필드 이름은 쿼리 검색기에 전달되어 그에 따라 데이터를 검색합니다.
배열은 다음에서 유지됩니다. topDocs
로 알려진 scoreDocs
. ScoreDocs
쿼리 실행을 기반으로 검색 결과를 유지합니다. 이 배열을 반복할 때 결과 데이터를 검색할 수 있습니다.
추천: 검색에 사용하는 분석기는 처음에 데이터를 인덱싱한 것과 동일한 분석기를 사용하는 것이 좋습니다.