Perpustakaan IResearch dimaksudkan untuk diperlakukan sebagai indeks mandiri yang mampu mengindeks dan menyimpan nilai -nilai individu secara kata demi kata. Data yang diindeks diperlakukan dengan basis per-versi/per-revisi, yaitu versi/revisi data yang ada tidak pernah dimodifikasi dan pembaruan/pemindahan diperlakukan sebagai versi baru/revisi data tersebut. Ini memungkinkan operasi membaca/menulis multi-threaded sepele pada indeks. Indeks ini memperlihatkan fungsionalitas pemrosesan data melalui antarmuka 'penulis' multi-threaded yang memperlakukan setiap abstraksi dokumen sebagai kumpulan bidang untuk mengindeks dan/atau menyimpan. Indeks ini memperlihatkan fungsi pengambilan data melalui antarmuka 'pembaca' yang mengembalikan catatan dari indeks yang cocok dengan kueri yang ditentukan. Kueri itu sendiri dibangun pohon kueri yang dibangun secara langsung menggunakan blok bangunan kueri yang tersedia di API. Infrastruktur kueri memberikan kemampuan memesan hasil yang ditetapkan oleh satu atau lebih implementasi peringkat/penilaian. Logika implementasi peringkat/penilaian berbasis plugin dan diinisialisasi malas selama runtime sesuai kebutuhan, memungkinkan penambahan logika peringkat/penilaian kustom tanpa perlu mengkompilasi ulang perpustakaan IResearch.
Indeks terdiri dari beberapa bagian independen, yang disebut segmen dan metadata indeks. Indeks Metadata menyimpan informasi tentang segmen indeks aktif untuk versi/revisi indeks tertentu. Setiap segmen indeks adalah indeks itu sendiri dan terdiri dari komponen logis berikut:
Baca/tulis akses ke komponen yang dibawa melalui format berbasis plugin. Indeks dapat berisi segmen yang dibuat menggunakan format yang berbeda.
Catatan basis data direpresentasikan sebagai abstraksi yang disebut dokumen. Dokumen sebenarnya adalah kumpulan bidang yang diindeks/disimpan. Untuk diproses, setiap bidang harus memenuhi setidaknya konsep IndexedField atau StoredField .
Agar tipe T IndexedField , kondisi berikut harus dipenuhi untuk objek m tipe T :
| Ekspresi | Memerlukan | Efek |
|---|---|---|
m.name() | Jenis output harus dapat dikonversi ke irs::string_ref | Nilai digunakan sebagai nama kunci. |
m.get_tokens() | Jenis output harus dapat dikonversi ke irs::token_stream* | Token Stream digunakan untuk mengisi dalam prosedur invert. Jika nilai adalah bidang nullptr diperlakukan sebagai tidak diindeks. |
m.index_features() | Jenis output harus secara implisit dikonversi ke irs::IndexFeatures | Satu set fitur yang diminta untuk evaluasi selama pengindeksan. Misalnya mungkin berisi permintaan posisi pemrosesan dan frekuensi. Kemudian informasi yang dievaluasi dapat digunakan selama permintaan dan penilaian. |
m.features() | Jenis output harus dapat dikonversi ke const irs::flags& | Satu set fitur yang disediakan pengguna untuk dikaitkan dengan bidang. Misalnya mungkin berisi permintaan menyimpan norma lapangan. Kemudian informasi yang disimpan dapat digunakan selama permintaan dan penilaian. |
Agar Tipe T StoredField , kondisi berikut harus dipenuhi untuk objek m tipe T :
| Ekspresi | Memerlukan | Efek |
|---|---|---|
m.name() | Jenis output harus dapat dikonversi ke irs::string_ref | Nilai digunakan sebagai nama kunci. |
m.write(irs::data_output& out) | Jenis output harus dapat dikonversi ke bool. | Seseorang dapat menulis data sewenang -wenang untuk streaming yang dilambangkan dengan out untuk mengambil nilai tertulis menggunakan API index_reader nanti. Jika tidak ada yang tertulis tetapi nilai yang dikembalikan adalah true maka nilai tersimpan diperlakukan sebagai bendera. Jika nilai yang dikembalikan false maka tidak ada yang disimpan bahkan jika ada sesuatu yang ditulis untuk out . |
Abstraksi penyimpanan data yang dapat menyimpan data dalam memori atau pada sistem file tergantung pada implementasi mana yang dipakai. Direktori menyimpan setidaknya semua versi/revisi data indeks yang sedang digunakan. Untuk kasus di mana tidak ada pengguna aktif dari direktori maka setidaknya versi/revisi data terakhir disimpan. Versi/revisi data yang tidak digunakan dapat dihapus melalui direktori_cleaner. Versi tunggal/revisi indeks terdiri dari satu atau lebih segmen yang terkait, dan mungkin dibagikan, dengan versi/revisi tersebut.
Objek per instance per-direktori yang digunakan untuk pengindeksan data. Data dapat diindeks dalam basis per-dokumen atau bersumber dari pembaca lain untuk fungsi gabungan direktori sepele. Setiap commit() seorang penulis menghasilkan versi baru/revisi tampilan data di direktori yang sesuai. Selain itu antarmuka juga menyediakan kemampuan defragmentasi direktori untuk memungkinkan memadatkan beberapa versi versi/revisi yang lebih kecil menjadi representasi yang lebih kompak lebih besar. Seorang penulis mendukung metode dua fase melalui metode begin() / commit() / rollback() .
Tampilan indeks yang dapat digunakan kembali/dapat digunakan kembali pada titik waktu tertentu. Beberapa pembaca dapat menggunakan direktori yang sama dan dapat menunjuk ke versi/revisi data yang berbeda di direktori tersebut.
v3.10 atau lebih baru
v1.57.0 atau lebih baru (header saja)
BOOST_ROOT= < path-to > /boost_1_57_0make
make installatau titik lz4_root di direktori sumber untuk dibangun bersama dengan IResearch
Jika mengkompilasi IResearch dengan/mt Tambahkan add_definitions ("/mtd") ke akhir cmake_unofficial/cmakelists.txt karena cmake akan mengabaikan argumen baris perintah -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 installatau titik lz4_root di direktori sumber untuk dibangun bersama dengan IResearch
LZ4_ROOT= < install-path >Binari Win32 juga tersedia di:
v53 atau lebih tinggi
./configure --disable-samples --disable-tests --enable-static --srcdir= " $( pwd ) " --prefix= < install-path > --exec-prefix= < install-path >
make installatau poin ICU_ROOT di direktori sumber untuk dibangun bersama dengan IResearch atau melalui manajer paket distribusi: libicu
Cari Tautan: "Binari ICU4C"
ICU_ROOT= < path-to-icu >Kustom CMakeLists.txt dimaksudkan untuk digunakan dengan Snowball v2.0.0 dan versi yang lebih baru. Setidaknya diuji untuk bekerja pada komit 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 .atau point snowball_root di direktori sumber untuk dibangun bersama dengan IResearch atau melalui manajer paket distribusi: libstemmer
The Custom CMakeLists.txt didasarkan pada revisi 5137019d68befd633ce8b1cd48065f41e77ed43e versi selanjutnya dapat digunakan dengan risiko kegagalan kompilasi Anda sendiri untuk gagal kompilasi kompilasi Anda sendiri untuk gagal kompilasi kompilasi Anda sendiri untuk gagal kompilasi kompilasi Anda sendiri kompilasi kompilasi Anda sendiri Anda sendiri kompilasi Anda sendiri kompilasi Anda sendiri
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 .atau point snowball_root di direktori sumber untuk dibangun bersama dengan IResearch
Untuk bangunan statis:
- Di MSVC Open: Build/Snowball.sln
- Set: STEMMER -> Properties -> Properti Konfigurasi -> C /C ++ -> Pembuatan Kode -> Runtime Library = /MTD
- Bangun -> Bangun Solusi
SNOWBALL_ROOT= < path-to-snowball >poin vpack_root di direktori sumber untuk dibangun bersama dengan IResearch
mkdir build && cd build
cmake ..
makeatau poin gtest_root di direktori sumber untuk dibangun bersama dengan IResearch
mkdir build && cd build
cmake -g " Visual studio 12 " -Ax64 -Dgtest_force_shared_crt=ON -DCMAKE_DEBUG_POSTFIX= " " ..
cmake --build .
mv Debug ../libatau poin gtest_root di direktori sumber untuk dibangun bersama dengan IResearch
GTEST_ROOT= < path-to-gtest >Unduh sejumlah daftar Stopwords, misalnya: https://github.com/snowballstem/snowball-website/tree/master/algorithms/*/stop.txt https://code.google.com/p-words/
IRESEARCH_TEXT_STOPWORD_PATH= < path-to-stopword-lists >Jika variabel IRESEARCE_TEXT_STOPWORD_PATH dibiarkan tidak disetel maka subdirektori stopword spesifik lokal dianggap berada di direktori kerja saat ini
git clone < IResearch code repository > /iresearch.git iresearch
cd iresearch
mkdir build && cd buildHasilkan file build <*nix>:
cmake -DCMAKE_BUILD_TYPE=[Debug | Release | Coverage] -g " Unix Makefiles " ..
- Jika beberapa perpustakaan tidak ditemukan oleh build maka atur lingkungan> variabel yang diperlukan (misalnya boost_root, boost_librarydir, lz4_root, openfst_root, gtest_root)
- Jika ICU atau Snowball dari jalur distribusi tidak ditemukan, variabel tambahan> tambahan berikut mungkin diperlukan:> icu_root_suffix = x86_64-linux-gnu snowball_root_suffix = x86_64-linux-gnu
Hasilkan file build (win32):
cmake -g " Visual studio 12 " -Ax64 ..Jika beberapa perpustakaan tidak ditemukan oleh build maka atur variabel lingkungan yang diperlukan (misalnya boost_root, boost_librarydir, lz4_root, openfst_root, gtest_root)
Setel Build Identifier untuk build ini (opsional)
echo " <build_identifier> " > BUILD_IDENTIFIERBangun Perpustakaan:
cmake --build .Perpustakaan Uji:
cmake --build . --target iresearch-checkInstal Perpustakaan:
cmake --build . --target installCakupan Kode:
cmake --build . --target iresearch-coverageAda pembungkus Python untuk IResearch. Pembungkus memberikan akses ke objek pembaca direktori. Untuk contoh penggunaan, lihat /Python /Script
Untuk membangun Pyresearch Swig Generator harus tersedia. Tambahkan -DUSE_PYRESEARCH = ON ke CMAND -LINE CMAKE untuk menghasilkan target Pyresearch
Jalankan Target Pyresearch-Instal
Beberapa versi installer ICU tampaknya gagal menyediakan semua DLL ICU melalui variabel lingkungan, penyesuaian manual mungkin diperlukan.
Versi Bersama Libiresearch digunakan. Instal IResearch sebelum menjalankan PyResearch.
Ketergantungan pihak ke -3 eksternal harus tersedia untuk perpustakaan IResearch secara terpisah. Mereka dapat diinstal melalui sistem manajemen paket distribusi atau dibangun dari sumber dan variabel lingkungan yang sesuai ditetapkan.
v1.57.0 atau lebih baru (utas sistem lokal) yang digunakan untuk fungsionalitas yang tidak tersedia di STL (tidak termasuk fungsionalitas yang tersedia di ICU)
digunakan untuk kompresi/dekompresi data byte/string
Digunakan oleh analisis untuk parsing, mengubah dan tokenisisasi data string
Digunakan oleh Analisis untuk menghitung batang kata (yaitu akar) untuk pencocokan kata yang lebih fleksibel dari bahasa yang tidak didukung oleh 'bola salju' dilakukan dengan kata demi kata
digunakan untuk menulis tes untuk perpustakaan IResearch
digunakan untuk serialisasi/deserialisasi JSON
digunakan oleh analisis :: text_analyzer untuk memfilter kata-kata kebisingan yang seharusnya tidak memengaruhi teks rentang misalnya untuk 'en' ini biasanya 'a', 'the', dll ... unduh sejumlah daftar stopwords, misalnya: https:/github.com/snowstem/snowball-website/tree/algee/gorrub.com/snowstem/snowball https://code.google.com/p/stop-words/ atau membuat daftar spesifik bahasa khusus dari Stopwords menempatkan file dengan stopwords, (UTF8 dikodekan dengan satu kata per baris, setiap teks setelah spasi putih pertama diabaikan), dalam sutradara yang sesuai dengan bahasanya (banyak file per bahasa didukung dan akan ditafsirkan sebagai lajang) yang sesuai dengan bahasa)
| Menyaring | Keterangan |
|---|---|
| IRS :: BY_EDIT_DISTANCE | untuk penyaringan nilai berdasarkan jarak levenshtein |
| IRS :: by_granular_range | Untuk penyaringan nilai numerik yang lebih cepat dalam kisaran yang diberikan, dengan kemungkinan menentukan rentang terbuka/tertutup |
| IRS :: by_ngram_similarity | untuk pemfilteran nilai berdasarkan model NGRAM |
| IRS :: by_phrase | untuk penyaringan nilai yang peka terhadap posisi-kata, dengan kemungkinan melewatkan posisi yang dipilih |
| IRS :: by_prefix | Untuk memfilter nilainya nilai pasti |
| IRS :: by_range | Untuk penyaringan nilai dalam kisaran yang diberikan, dengan kemungkinan menentukan rentang terbuka/tertutup |
| IRS :: by_same_position | Untuk pemfilteran sensitif pemesanan istilah nilai yang tepat |
| IRS :: BY_TERM | untuk memfilter nilai yang tepat |
| IRS :: by_terms | Untuk memfilter nilai yang tepat dengan satu set istilah yang ditentukan |
| IRS :: BY_WILDCARD | untuk penyaringan nilai berdasarkan pola pencocokan |
| IRS :: BynestedFilter | untuk penyaringan dokumen berdasarkan pola pencocokan pada sub-dokumennya |
| IRS :: dan | Konjungsi Boolean dari beberapa filter, mempengaruhi peringkat/skor dokumen yang sesuai |
| IRS :: atau | Disjungsi Boolean dari beberapa filter, mempengaruhi peringkat/skor dokumen yang sesuai (termasuk fungsionalitas "kecocokan minimum") |
| IRS :: Tidak | Boolean negasi beberapa filter |
Hak Cipta (C) 2017-2023 ARANGODB GMBH
Hak Cipta (C) 2016-2017 EMC Corporation
Perangkat lunak ini disediakan di bawah lisensi perangkat lunak Apache 2.0 yang disediakan dalam file lisensi.md. Informasi lisensi untuk produk pihak ketiga yang digunakan oleh mesin pencari IRESEARCH dapat ditemukan di ketiga_party_readme.md