Iresearchライブラリは、個々の値を逐語的にインデックス作成および保存することができるスタンドアロンインデックスとして扱うことを目的としています。インデックス化されたデータは、バージョンごと/レビジョンごとに扱われます。つまり、既存のデータバージョン/リビジョンは変更されず、更新/removalsはそのデータの新しいバージョン/リビジョンとして扱われます。これにより、インデックス上の些細なマルチスレッド読み取り/書き込み操作が可能になります。インデックスは、各ドキュメントの抽象化をインデックスおよび/またはストアのフィールドのコレクションとして扱うマルチスレッド「ライター」インターフェイスを介してデータ処理機能を公開します。インデックスは、指定されたクエリと一致するインデックスからレコードを返す「Reader」インターフェイスを介してデータ検索機能を公開します。クエリ自体は、APIで利用可能なクエリビルディングブロックを使用して、直接構築されたクエリツリーを構築されます。クエリインフラストラクチャは、1つ以上のランキング/スコアリングの実装によって設定された結果を順序付けする機能を提供します。ランキング/スコアリングの実装ロジックは、必要に応じてランタイム中にプラグインベースであり、怠zyなイニタイアル化されているため、Iresearchライブラリを再コンパイルする必要なく、カスタムランキング/スコアリングロジックを追加できます。
インデックスは、セグメントとインデックスメタデータと呼ばれる複数の独立した部品で構成されています。インデックスメタデータは、特定のインデックスバージョン/リビジョンのアクティブインデックスセグメントに関する情報を保存します。各インデックスセグメントはインデックス自体であり、次の論理コンポーネントで構成されています。
プラグインベースの形式を介して運ばれるコンポーネントへのアクセスを読み取ります。インデックスには、異なる形式を使用して作成されたセグメントが含まれる場合があります。
データベースレコードは、ドキュメントと呼ばれる抽象化として表されます。ドキュメントは、実際にはインデックス/保存されたフィールドのコレクションです。処理するために、各フィールドは、少なくともIndexedFieldまたはStoredField概念を満たす必要があります。
タイプTがIndexedFieldである場合、タイプTのオブジェクトmについては、次の条件を満たす必要があります。
| 表現 | 必要 | 効果 |
|---|---|---|
m.name() | 出力タイプはirs::string_refに変換可能でなければなりません | 値はキー名として使用します。 |
m.get_tokens() | 出力タイプはirs::token_stream* | トークンストリームは、反転手順での居住に使用します。値がnullptrフィールドの場合、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を介して削除できます。インデックスの単一のバージョン/リビジョンは、上記のバージョン/リビジョンに関連する1つ以上のセグメント、および場合によっては共有されることで構成されています。
データのインデックス作成に使用される単一のインスタンスごとのインスタンスオブジェクト。データは、文書ごとのベースでインデックス化されるか、些細なディレクトリマージ機能のために別のリーダーから供給される場合があります。ライターの各commit()は、対応するディレクトリ内のデータのビューの新しいバージョン/改訂を作成します。さらに、このインターフェイスは、複数の小型バージョン/リビジョンセグメントをより大きなコンパクトな表現にコンパクトすることを可能にするディレクトリの解体機能も提供します。ライターはbegin() / commit() / rollback()メソッドを介して2フェーズトランザクションをサポートします。
特定の時点でのインデックスの再利用可能な/リフレッシュ可能なビュー。複数の読者は同じディレクトリを使用でき、そのディレクトリ内のデータの異なるバージョン/改訂を指すことができます。
v3.10以降
v1.57.0以降(ヘッダーのみ)
BOOST_ROOT= < path-to > /boost_1_57_0make
make installまたは、Iresearchと一緒に構築するためにソースディレクトリのLZ4_ROOTをポイント
Iresearch add add_definitions( "/mtd")をcmake_unofficial/cmakelists.txtにコンパイルする場合、cmakeはコマンドライン引数-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をポイント
LZ4_ROOT= < install-path >Win32バイナリも利用できます。
V53以上
./configure --disable-samples --disable-tests --enable-static --srcdir= " $( pwd ) " --prefix= < install-path > --exec-prefix= < install-path >
make installまたは、ソースディレクトリでICU_ROOTをポイントして、IresearchまたはDistributionsのパッケージマネージャーを介してビルドします:libicu
リンクを探してください:「ICU4Cバイナリ」
ICU_ROOT= < path-to-icu >カスタム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
カスタムcmakelists.txtは、リビジョン5137019d68befd633ce8b1cd48065f41e77ed43e後のバージョンに基づいています。
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 Open:Build/Snowball.sln
- セット:STEMMER->プロパティ - >構成プロパティ - > C /C ++ - >コード生成 - > Runtime Library = /Mtd
- ビルド - >ソリューションをビルドします
SNOWBALL_ROOT= < path-to-snowball >Iresearchと一緒に構築するために、ソースディレクトリのポイントvpack_root
mkdir build && cd build
cmake ..
makeまたは、ソースディレクトリでgtest_rootをポイントして、iresearchと一緒に構築する
mkdir build && cd build
cmake -g " Visual studio 12 " -Ax64 -Dgtest_force_shared_crt=ON -DCMAKE_DEBUG_POSTFIX= " " ..
cmake --build .
mv Debug ../libまたは、ソースディレクトリでgtest_rootをポイントして、iresearchと一緒に構築する
GTEST_ROOT= < path-to-gtest >stopwordsのリストをダウンロードしてください:https://github.com/snowballystem/snowball-website/tree/master/algorithms/*/stop.txt https://code.google.com/p/stop-words/
IRESEARCH_TEXT_STOPWORD_PATH= < path-to-stopword-lists >可変iresearch_text_stopword_pathが持続したままになっている場合、ロケール固有のstopword-listサブディレクトリは現在の作業ディレクトリにあるとみなされます
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またはスノーボールが見つからない場合、次の追加の追加>環境変数が必要になる場合があります:> ICU_ROOT_SUFFIX = X86_64-LINUX-GNU SNOWBALL_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ラッパーがあります。ラッパーは、ディレクトリリーダーオブジェクトにアクセスできます。使用例 /python /scriptsを参照してください
PyResearch Swigジェネレーターを構築するには、利用可能になります。 -duse_pyresearch = on on cmakeコマンドラインにオンにして、pyresearchターゲットを生成します
ターゲットpyResearch-installを実行します
ICUインストーラーの一部のバージョンは、Path Enviroment変数を介してすべてのICU DLLを利用できないようです。手動調整が必要になる場合があります。
libiresearchの共有バージョンが使用されます。 PyResearchを実行する前にIresearchをインストールします。
外部のサードパーティの依存関係は、IRESearchライブラリで別々に利用できるようにする必要があります。それらは、配布パッケージ管理システムを介してインストールされるか、それに応じて設定された適切な環境変数とSourceからビルドすることができます。
v1.57.0以降(Locale Systemスレッド)STLで利用できない機能に使用されます(ICUで利用可能な機能を除く)
バイト/文字列データの圧縮/減圧に使用されます
解析、変換、トークンの文字列データに分析装置が使用する
「雪だるま」によってサポートされていない言語からの単語のより柔軟なマッチングマッチングのために、単語のステム(つまりルート)を計算するために分析装置が使用する
Iresearchライブラリのテストの作成に使用されます
JSONのシリアル化/脱介入に使用されます
分析で使用:: text_analyzerは、「en」の範囲のテキストに影響を与えないでください。 https://code.google.com/p/stop-words/またはstopwordsのカスタム言語固有のリストを作成するストップワードでファイルを配置します(utf8は行ごとに1つの単語でエンコードされ、最初の白人の後には無視されます)、言語ごとに対応するディレクトリ(言語あたりのファイルがサポートされます)
| フィルター | 説明 |
|---|---|
| IRS :: by_edit_distance | Levenshtein距離に基づく値のフィルタリング用 |
| IRS :: by_granular_range | 特定の範囲内の数値のフィルタリングをより高速にフィルタリングし、オープン/クローズ範囲を指定する可能性があります |
| IRS :: by_ngram_similarity | NGRAMモデルに基づく値のフィルタリング用 |
| IRS :: by_phrase | 選択された位置をスキップする可能性を伴う、値の単語に敏感なフィルタリング用 |
| IRS :: by_prefix | 正確な値プレフィックスのフィルタリング用 |
| IRS :: by_range | 特定の範囲内の値をフィルタリングするために、オープン/クローズ範囲を指定する可能性があります |
| IRS :: by_same_position | 正確な値の用語挿入命令に敏感なフィルタリングの場合 |
| IRS :: by_term | 正確な値のフィルタリング用 |
| IRS :: by_terms | 指定された用語のセットによる正確な値のフィルタリング用 |
| IRS :: by_wildcard | マッチングパターンに基づく値のフィルタリング用 |
| IRS :: bynestedfilter | サブドキュメントのマッチングパターンに基づくドキュメントのフィルタリング用 |
| IRS ::および | 複数のフィルターのブール接続詞、必要に応じてドキュメントのランク/スコアに影響を与える |
| IRS ::または | 複数のフィルターのブール分離、必要に応じてドキュメントのランク/スコアに影響を与える(「最小一致」機能を含む) |
| IRS :: | 複数のフィルターのブール否定 |
Copyright(c)2017-2023 arangodb gmbh
Copyright(c)2016-2017 EMC Corporation
このソフトウェアは、license.mdファイルで提供されるApache 2.0ソフトウェアライセンスの下で提供されます。 Iresearch Search Engineが使用するサードパーティ製品のライセンス情報は、shuld_party_readme.mdにあります