IRESearch庫被視為能夠逐字化和存儲單個值的獨立索引。索引數據以每次/每次翻新為基礎處理,IE現有數據版本/修訂永遠不會修改,並且將更新/刪除視為所述數據的新版本/修訂。這允許在索引上進行瑣碎的多線程讀/寫操作。該索引通過多線程“作者”接口公開其數據處理功能,該界面將每個文檔抽象視為索引和/或存儲的字段集合。該索引通過“讀取器”接口公開其數據檢索功能,該接口從索引中返回與指定查詢匹配的索引。查詢本身是使用API中可用的查詢構建塊直接構建的查詢樹。查詢基礎架構提供了通過一個或多個排名/評分實現訂購結果的能力。排名/評分實現邏輯是基於插件的,並且根據需要在運行時懶惰,可以添加自定義排名/評分邏輯,而無需重新編譯IRESearch庫。
索引由多個獨立部分組成,稱為段和索引元數據。索引元數據存儲有關特定索引版本/修訂版活動索引段的信息。每個索引段都是一個索引本身,由以下邏輯組件組成:
通過基於插件的格式讀取/寫入對攜帶的組件的訪問。索引可能包含使用不同格式創建的片段。
數據庫記錄表示為稱為文檔的抽象。文檔實際上是索引/存儲字段的集合。為了處理處理,每個字段應至少滿足IndexedField或StoredField概念。
對於T型為IndexedField ,必須滿足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) | 輸出類型必須可轉換為布爾。 | 可以將任意數據寫入以out表示的流,以便稍後使用index_reader api檢索書面值。如果什麼都沒有寫,但是返回值是true ,則將存儲的值視為標誌。如果返回的值為false ,那麼即使已經寫入了out ,也沒有存儲任何東西。 |
數據存儲抽象可以將數據存儲在內存中或文件系統上,具體取決於實例化的實現。目錄至少存儲所有當前使用的索引數據版本/修訂版。對於沒有目錄的活動用戶的情況,至少要存儲最後一個數據版本/修訂版。未使用的數據版本/修訂可以通過Directory_Cleaner刪除。索引的單個版本/修訂由與上述版本/修訂版相關的一個或多個段組成,並可能共享。
用於索引數據的單個實例每個指導對象。數據可以以人數為基礎索引,也可以從另一個讀者中獲取瑣碎目錄合併功能。作者的每個commit()都會在相應目錄中生成數據視圖的新版本/修訂。此外,該界面還提供了目錄碎片化功能,以允許將多個較小版本/修訂段壓縮為較大的更緊湊的表示。作者通過begin() / commit() / rollback()方法支持兩階段交易。
在給定時間點的索引可重複使用/刷新的視圖。多個讀者可以使用相同的目錄,並且可以指向該目錄中數據的不同版本/修訂。
v3.10或更高版本
v1.57.0或更高版本(僅標題)
BOOST_ROOT= < path-to > /boost_1_57_0make
make install或點lz4_root在源目錄中與iResearch一起構建
如果將iResearch與/mt添加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或點lz4_root在源目錄中與iResearch一起構建
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一起構建或通過Distribution的軟件包管理器:Libicu
尋找鏈接:“ ICU4C二進製文件”
ICU_ROOT= < path-to-icu >自定義cmakelists.txt旨在與雪球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 .或指向源目錄的雪球_ROOT與Iresearch或通過Distribution的軟件包管理器一起構建:libstemmer
自定義cmakelists.txt基於修訂版5137019D68BEFD633333CE8B1CD48065F41E77ED43E後來的版本可能會出於您自身的彙編失敗風險而使用
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
- set:stemmer->屬性 - >配置屬性 - > c /c ++ - >代碼生成 - >運行時庫= /mtd
- 構建 - >構建解決方案
SNOWBALL_ROOT= < path-to-snowball >點vpack_root在源目錄中與iResearch一起構建
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 >下載任何數量的停止列表,例如:https://github.com/snowballemy/snowball-website/tree/master/master/algorithms/gle/stop.txt.txt https https https://code.google.com/p/stop-words/p/stop-words/-
IRESEARCH_TEXT_STOPWORD_PATH= < path-to-stopword-lists >如果將變量iresearch_text_stopword_path放在未設置
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-coverage有Python包裝器用於Iresearch。包裝器可訪問目錄讀取器對象。有關用法示例,請參見 /python /腳本
為了構建Pyresearch erearch swig Generator。 add -duse_pyresearch = on to cmake命令行生成PyResearch目標
運行目標PyResearch-Install
某些ICU安裝程序的某些版本似乎無法通過路徑環境變量提供所有ICU DLL,可能需要進行手動調整。
使用Libiresearch的共享版本。在運行PyResearch之前,請安裝IRESEARCH。
外部第三方依賴性必須分別向IRESEARZ庫提供。它們可以通過分銷包管理系統安裝,也可以從源構建以及相應設置的適當環境變量進行安裝。
v1.57.0或更高版本(Locale System螺紋)用於功能中的功能(不包括ICU中的功能)
用於壓縮/減壓字節/字符串數據
分析儀用於解析,轉換和令牌字符串數據
分析儀用於計算單詞詞幹(IE rots),以逐字完成“雪球”不支持的語言的更靈活的匹配單詞
用於為IRESEARZ庫編寫測試
用於JSON序列化/次要化
通過分析:: text_analyzer使用,用於濾除不應影響文本的噪聲單詞,例如“ en''這些是通常的'a','',''等...下載任何數量的停止列表,eg,eg,eg from:https://github.com/snowball weball ball stem/snowball-weball-weball weball-weball-weball-weebball-weebball-weeball-tree/tree/tree/master/master/master/algorith/algorith/allgormath/allethy///////hod.tt https://code.google.com/p/stop-words/或創建一個自定義的語言 - 規範列表,用stopwords將文件放在文件(UTF8用一個單行編碼的UTF8編碼),第一個whitespace之後的任何文本被忽略後的任何文本),在與其語言相通用的目錄中(支持多個文件,都將被解釋為單個單個列表)。
| 篩選 | 描述 |
|---|---|
| IRS :: by_edit_distance | 用於根據Levenshtein距離過濾值 |
| IRS :: by_granular_range | 為了更快地過濾給定範圍內的數字值,有可能指定開放/封閉範圍 |
| IRS :: by_ngram_simurility | 用於基於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 ::不 | 布爾否定多個過濾器 |
版權(C)2017-2023 Arangodb GmbH
版權(C)2016-2017 EMC Corporation
該軟件是在許可證文件中提供的Apache 2.0軟件許可下提供的。 IRESearch搜索引擎使用的第三方產品的許可信息可以在thix_party_readme.md中找到