IRESEARCH 라이브러리는 개별 값을 구두로 인덱싱하고 저장할 수있는 독립형 색인으로 취급되어야합니다. 인덱스 된 데이터는 버전 당/개정 기준으로 처리되며, 즉 기존 데이터 버전/개정은 수정되지 않으며 업데이트/제거는 상기 데이터의 새로운 버전/개정으로 취급됩니다. 이를 통해 인덱스에서 사소한 다중 스레드 읽기/쓰기 작업이 가능합니다. 인덱스는 각 문서 추상화를 색인 및/또는 저장에 필드 모음으로 취급하는 다중 스레드 '저작자'인터페이스를 통해 데이터 처리 기능을 노출시킵니다. 인덱스는 지정된 쿼리와 일치하는 색인에서 레코드를 반환하는 'Reader'인터페이스를 통해 데이터 검색 기능을 노출시킵니다. 쿼리 자체는 API에서 사용 가능한 쿼리 빌딩 블록을 사용하여 직접 구축 된 쿼리 트리입니다. 쿼리 인프라는 하나 이상의 순위/점수 구현으로 설정 한 결과를 주문할 수있는 기능을 제공합니다. 순위/점수 구현 로직은 필요에 따라 런타임 중에 플러그인 기반이며 게으른 이니셜 화되어 IRESEARCH 라이브러리를 다시 컴파일 할 필요없이 사용자 정의 순위/점수 로직을 추가 할 수 있습니다.
인덱스는 세그먼트 및 인덱스 메타 데이터라고하는 여러 독립 부품으로 구성됩니다. 인덱스 메타 데이터는 특정 인덱스 버전/개정에 대한 활성 인덱스 세그먼트에 대한 정보를 저장합니다. 각 인덱스 세그먼트는 인덱스 자체이며 다음의 논리적 구성 요소로 구성됩니다.
플러그인 기반 형식을 통해 수행되는 구성 요소에 대한 액세스를 읽고 쓰십시오. 인덱스에는 다른 형식을 사용하여 생성 된 세그먼트가 포함될 수 있습니다.
데이터베이스 레코드는 문서라고하는 추상화로 표시됩니다. 문서는 실제로 인덱스/저장 필드 모음입니다. 처리되기 위해서는 각 필드는 적어도 IndexedField 또는 StoredField 개념을 만족시켜야합니다.
Type T 가 IndexedField 되려면 Type T 의 객체 m 에 대해 다음 조건을 충족해야합니다.
| 표현 | 필요합니다 | 효과 |
|---|---|---|
m.name() | 출력 유형은 irs::string_ref 로 변환 할 수 있어야합니다 | 값은 키 이름으로 사용합니다. |
m.get_tokens() | 출력 유형은 irs::token_stream* | 토큰 스트림은 반전 절차에서 채워진 데 사용됩니다. 값 인 경우 nullptr 필드는 비 인덱스로 취급됩니다. |
m.index_features() | 출력 유형은 irs::IndexFeatures 로 암시 적으로 변환해야합니다 | 인덱싱 중에 평가를 요청한 일련의 기능. 예를 들어 처리 위치 및 주파수 요청이 포함될 수 있습니다. 나중에 평가 된 정보는 쿼리 및 스코어링 중에 사용할 수 있습니다. |
m.features() | 출력 유형은 const irs::flags& 로 전환 할 수 있어야합니다. | 필드와 관련된 일련의 사용자 제공 기능. 예를 들어 현장 규범 저장 요청이 포함될 수 있습니다. 나중에 저장된 정보는 쿼리 및 스코어링 중에 사용할 수 있습니다. |
유형 T StoredField 되려면, 다음 조건을 유형 T 의 객체 m 에 대해 충족해야합니다.
| 표현 | 필요합니다 | 효과 |
|---|---|---|
m.name() | 출력 유형은 irs::string_ref 로 변환 할 수 있어야합니다 | 값은 키 이름으로 사용합니다. |
m.write(irs::data_output& out) | 출력 유형은 bool로 변환 할 수 있어야합니다. | INDEX_READER API를 사용하여 나중에 서면 값을 검색하기 위해 out 로 표시되는 스트림에 임의의 데이터를 작성할 수 있습니다. 아무것도 쓰지 않았지만 반환 된 값이 true 이라면 저장된 값은 깃발로 취급됩니다. 반환 된 값이 false 인 경우 무언가가 out 에 기록 된 경우에도 아무것도 저장되지 않습니다. |
어떤 구현이 인스턴스화되는지에 따라 데이터를 메모리에 또는 파일 시스템에 저장할 수있는 데이터 저장 추상화. 디렉토리는 최소한 현재 사용중인 인덱스 데이터 버전/개정을 저장합니다. 디렉토리의 활성 사용자가없는 경우 최소한 마지막 데이터 버전/개정이 저장됩니다. 사용하지 않은 데이터 버전/개정은 directory_cleaner를 통해 제거 될 수 있습니다. 인덱스의 단일 버전/개정은 상기 버전/개정판과 관련된 하나 이상의 세그먼트로 구성되며 공유됩니다.
인덱싱 데이터에 사용되는 단일 인스턴스-디렉토리 당 개체. 데이터는 문서별로 인덱싱되거나 Trivial Directory 병합 기능을 위해 다른 판독기로부터 공급 될 수 있습니다. 작성자의 각 commit() 는 해당 디렉토리에서 데이터보기의 새 버전/개정을 생성합니다. 또한 인터페이스는 또한 다수의 작은 버전/개정 세그먼트를 더 큰 컴팩트 한 표현으로 압축 할 수 있도록 디렉토리 해체 기능을 제공합니다. 작가는 begin() / commit() / rollback() 메소드를 통해 2 단계 트랜잭션을 지원합니다.
주어진 시점에서 인덱스의 재사용 가능/새로 고침보기. 여러 독자가 동일한 디렉토리를 사용할 수 있으며 상기 디렉토리의 데이터의 다른 버전/수정을 가리킬 수 있습니다.
v3.10 이상
v1.57.0 이상 (헤더 만)
BOOST_ROOT= < path-to > /boost_1_57_0make
make install또는 Iresearch와 함께 빌드 할 소스 디렉토리의 LZ4_ROOT POINT LZ4_ROOT
cmake가 명령 줄 인수를 무시하기 때문에 cmake_unofficial/cmakelists.txt의 끝에 Add_definitions ( "/mtd")를 추가하는 Iresearch를 컴파일하는 경우 -dcmake_c_flags =/mtd
mkdir build && cd build
cmake -DCMAKE_INSTALL_PREFIX= < install-path > -DBUILD_STATIC_LIBS=on -g " Visual studio 17 " -Ax64 ../contrib/cmake_unofficial
cmake --build .
cmake --build . --target install또는 Iresearch와 함께 빌드 할 소스 디렉토리의 LZ4_ROOT POINT LZ4_ROOT
LZ4_ROOT= < install-path >Win32 Binaries도 다음과 같이 사용할 수 있습니다.
V53 이상
./configure --disable-samples --disable-tests --enable-static --srcdir= " $( pwd ) " --prefix= < install-path > --exec-prefix= < install-path >
make install또는 Iresearch와 함께 구축 할 소스 디렉토리의 ICU_ROOT POINT ICU_ROOT 또는 Distributions 'Package Manager : Libicu를 통해
링크 찾기 : "ICU4C Binaries"
ICU_ROOT= < path-to-icu >Custom Cmakelists.txt는 Snowball v2.0.0 이상 버전과 함께 사용되도록 고안되었습니다. 적어도 커밋 53739a805cfa6c77ff8496dc711dc1c106d987c1에서 작업하는 데 테스트되었습니다.
git clone https://github.com/snowballstem/snowball.git
mkdir build && cd build
cmake -DENABLE_STATIC=OFF -DNO_SHARED=OFF -g " Unix Makefiles " ..
cmake --build .
cmake -DENABLE_STATIC=OFF -DNO_SHARED=ON -g " Unix Makefiles " ..
cmake --build .또는 소스 디렉토리의 Snowball_Root 포인트 IRESEARCH와 함께 또는 Distributions 패키지 관리자 : LibStemmer를 통해 구축
Custom Cmakelists.txt는 개정 5137019D68BEFD6333CE8B1CD48065F41E77ED43E 이후 버전을 기반으로 한 버전이 컴파일 실패의 위험에 따라 사용될 수 있습니다.
git clone https://github.com/snowballstem/snowball.git
git reset --hard adc028f3ae646623bda2f99191fe9dc3287a909b
mkdir build && cd build
set PATH=%PATH% ; < path-to > /build/Debug
cmake -DENABLE_STATIC=OFF -DNO_SHARED=OFF -g " Visual studio 12 " -Ax64 ..
cmake --build .
cmake -DENABLE_STATIC=OFF -DNO_SHARED=ON -g " Visual studio 12 " -Ax64 ..
cmake --build .또는 소스 디렉토리의 Snowball_Root 포인트 IRESEARCH와 함께 빌드 할 수 있습니다.
정적 빌드의 경우 :
- MSVC에서 : Build/Snowball.sln
- 세트 : Stemmer-> 특성 -> 구성 속성 -> C /C ++ -> 코드 생성 -> 런타임 라이브러리 = /mtd
- 빌드 -> 솔루션 빌드
SNOWBALL_ROOT= < path-to-snowball >Iresearch와 함께 빌드 할 소스 디렉토리의 Point vpack_root
mkdir build && cd build
cmake ..
make또는 Iresearch와 함께 빌드 할 소스 디렉토리의 GTEST_ROOT 포인트
mkdir build && cd build
cmake -g " Visual studio 12 " -Ax64 -Dgtest_force_shared_crt=ON -DCMAKE_DEBUG_POSTFIX= " " ..
cmake --build .
mv Debug ../lib또는 Iresearch와 함께 빌드 할 소스 디렉토리의 GTEST_ROOT 포인트
GTEST_ROOT= < path-to-gtest >https://github.com/snowballstem/snowballstem/snowball-website/tree/mas
IRESEARCH_TEXT_STOPWORD_PATH= < path-to-stopword-lists >변수 iresearch_text_stopword_path가 삭제되지 않은 경우, Locale 특정 stopword-list subdirectories는 현재 작업 디렉토리에 위치한 것으로 간주됩니다.
git clone < IResearch code repository > /iresearch.git iresearch
cd iresearch
mkdir build && cd build빌드 파일 생성 <*nix> :
cmake -DCMAKE_BUILD_TYPE=[Debug | Release | Coverage] -g " Unix Makefiles " ..
- 빌드에서 일부 라이브러리를 찾을 수없는 경우 필요한 환경> 변수를 설정하십시오 (예 : boost_root, boost_librarydir, lz4_root, OpenFST_ROOT, GTEST_ROOT)
- 분포 경로에서 ICU 또는 Snowball을 찾을 수없는 경우 다음 추가> 환경 변수가 필요할 수 있습니다.> ICU_ROOT_SUFFIX = X86_64-LINUX-GNU SNOWBOLL_ROOT_SUFFIX = X86_64-LINUX-GNU
빌드 파일 생성 (Win32) :
cmake -g " Visual studio 12 " -Ax64 ..빌드에서 일부 라이브러리를 찾을 수없는 경우 필요한 환경 변수를 설정하십시오 (예 : boost_root, boost_librarydir, lz4_root, OpenFST_ROOT, GTEST_ROOT)
이 빌드의 빌드 식별자 설정 (선택 사항)
echo " <build_identifier> " > BUILD_IDENTIFIER빌드 라이브러리 :
cmake --build .테스트 라이브러리 :
cmake --build . --target iresearch-check라이브러리 설치 :
cmake --build . --target install코드 적용 범위 :
cmake --build . --target iresearch-coverageIresearch 용 파이썬 래퍼가 있습니다. 래퍼는 디렉토리 리더 객체에 액세스 할 수 있습니다. 사용 예제는 /Python /Scripts를 참조하십시오
Pyresearch Swig Generator를 구축하려면 사용할 수 있습니다. pyresearch 대상을 생성하려면 -duse_pyresearch = on에 cmake 명령 줄을 추가하십시오
대상 Pyresearch-Install을 실행하십시오
일부 버전의 ICU 설치 프로그램은 경로 환경 변수를 통해 모든 ICU DLL을 사용할 수없는 것으로 보이므로 수동 조정이 필요할 수 있습니다.
Libiresearch의 공유 버전이 사용됩니다. pyresearch를 실행하기 전에 iResearch를 설치하십시오.
외부 제 3 자 종속성은 IRESEARCH 라이브러리에서 별도로 제공되어야합니다. 배포 패키지 관리 시스템을 통해 설치되거나 소스 및 그에 따라 설정된 적절한 환경 변수에서 빌드 할 수 있습니다.
v1.57.0 이상 (Locale System 스레드)은 STL에서 사용할 수없는 기능에 사용됩니다 (ICU에서 사용 가능한 기능 제외)
바이트/스트링 데이터의 압축/감압에 사용됩니다
문자열 데이터를 구문 분석, 변환 및 토큰 화하기 위해 분석기에서 사용
'Snowball'에서 지원하지 않는 언어에서보다 유연한 일치하는 단어 줄기 (즉, 루트)를 계산하기 위해 분석기가 사용합니다.
IRESEARCH 라이브러리에 대한 테스트 작성에 사용됩니다
JSON 직렬화/사막화에 사용됩니다
분석에 의해 사용 :: Text_analyzer는 'en'은 'en', 'a', 'the'등에 대한 텍스트에 영향을 미치지 않아야 할 소음 단어를 필터링하기위한 텍스트 _analyzer ... https://github.com/snowballstem/snowball-website/tree/mas https://code.google.com/p/stop-words/ 또는 사용자 정의 언어-특이 적 스톱워드 목록 작성 스톱워드 목록을 작성하십시오. 스톱워드가있는 파일을 배치합니다 (라인 당 한 단어로 인코딩, 첫 번째 흰색 공백 후 모든 텍스트가 무시됩니다) (언어 당 여러 파일이 지원되고 단일 목록으로 해석됩니다).
| 필터 | 설명 |
|---|---|
| IRS :: by_edit_distance | Levenshtein 거리를 기준으로 값의 필터링 |
| IRS :: by_granular_range | 개방형/닫는 범위를 지정할 가능성과 함께 주어진 범위 내에서 숫자 값을 더 빠르게 필터링하려면 |
| IRS :: by_ngram_similarity | NGRAM 모델을 기반으로 값의 필터링 용 |
| IRS :: by_phrase | 선택된 위치를 건너 뛸 가능성이있는 Word-Position-Sensitive 값 필터링의 경우 |
| IRS :: by_prefix | 정확한 값 접두사 필터링 용 |
| IRS :: by_range | 개방/폐쇄 범위를 지정할 가능성이있는 주어진 범위 내에서 값 필터링 |
| IRS :: by_same_position | 정확한 값의 용어 인사기 민감한 필터링 용 |
| IRS :: by_term | 정확한 값의 필터링 |
| IRS :: by_terms | 지정된 항에 의해 정확한 값을 필터링하려면 |
| IRS :: by_wildcard | 일치 패턴에 기초한 값의 필터링 |
| IRS :: BynestedFilter | 하위 부문에서 일치하는 패턴을 기반으로 문서 필터링 |
| IRS :: 및 | 다중 필터의 부울 결합, 문서 순위/스코어에 영향을 미치는 적절한 |
| IRS :: 또는 | 다중 필터의 부울 분리, 문서 순위/스코어에 영향을 미치는 ( "최소 일치"기능 포함) |
| IRS :: 아닙니다 | 여러 필터의 부울 부정 |
저작권 (C) 2017-2023 Arangodb Gmbh
저작권 (C) 2016-2017 EMC Corporation
이 소프트웨어는 License.md 파일에 제공된 Apache 2.0 소프트웨어 라이센스에 따라 제공됩니다. Iresearch Search Engine에서 사용하는 타사 제품에 대한 라이센스 정보는 Third_Party_Readme.md에서 찾을 수 있습니다.