ไลบรารี IRESEARCH นั้นถือว่าเป็นดัชนีสแตนด์อโลนที่มีความสามารถในการจัดทำดัชนีและจัดเก็บค่าแต่ละคำต่อคำ ข้อมูลที่จัดทำดัชนีจะได้รับการปฏิบัติตามแบบต่อหน้า/ต่อการเปลี่ยนแปลงเช่นเวอร์ชันข้อมูลที่มีอยู่/การแก้ไขจะไม่ได้รับการแก้ไขและการอัปเดต/การลบจะถือว่าเป็นเวอร์ชัน/การแก้ไขใหม่ของข้อมูลดังกล่าว สิ่งนี้ช่วยให้การดำเนินการอ่าน/เขียนหลายเธรดเล็กน้อยบนดัชนี ดัชนีจะเปิดเผยฟังก์ชั่นการประมวลผลข้อมูลผ่านอินเตอร์เฟส 'นักเขียน' แบบหลายเธรดที่ปฏิบัติต่อเอกสารที่เป็นนามธรรมแต่ละรายการเป็นชุดของฟิลด์เพื่อดัชนีและ/หรือจัดเก็บ ดัชนีจะเปิดเผยฟังก์ชั่นการดึงข้อมูลผ่านอินเตอร์เฟส 'Reader' ที่ส่งคืนระเบียนจากดัชนีที่ตรงกับแบบสอบถามที่ระบุ แบบสอบถามตัวเองสร้างต้นไม้แบบสอบถามที่สร้างขึ้นโดยตรงโดยใช้การสร้างบล็อกแบบสอบถามที่มีอยู่ใน API โครงสร้างพื้นฐานการสืบค้นให้ความสามารถในการสั่งซื้อผลลัพธ์ที่กำหนดโดยการจัดอันดับ/การให้คะแนนอย่างน้อยหนึ่งรายการ ตรรกะการจัดอันดับ/การให้คะแนนตรรกะการใช้งานนั้นใช้ปลั๊กอินและขี้เกียจ-เริ่มต้นในระหว่างการรันไทม์ตามต้องการช่วยให้สามารถเพิ่มตรรกะการจัดอันดับ/การให้คะแนนแบบกำหนดเองโดยไม่จำเป็นต้องคอมไพล์ไลบรารี Iresearch อีกครั้ง
ดัชนีประกอบด้วยหลายส่วนอิสระที่เรียกว่าเซ็กเมนต์และข้อมูลเมตาดัชนี ดัชนีข้อมูลเมตาจัดเก็บข้อมูลเกี่ยวกับเซ็กเมนต์ดัชนีที่ใช้งานอยู่สำหรับรายการดัชนี/การแก้ไขเฉพาะ แต่ละส่วนดัชนีเป็นดัชนีเองและประกอบด้วยส่วนประกอบเชิงตรรกะต่อไปนี้:
อ่าน/เขียนการเข้าถึงส่วนประกอบที่ดำเนินการผ่านรูปแบบที่ใช้ปลั๊กอิน ดัชนีอาจมีเซ็กเมนต์ที่สร้างขึ้นโดยใช้รูปแบบที่แตกต่างกัน
ระเบียนฐานข้อมูลถูกแสดงเป็นนามธรรมที่เรียกว่าเอกสาร เอกสารเป็นคอลเลกชันของฟิลด์ที่จัดทำดัชนี/จัดเก็บ ในการดำเนินการประมวลผลแต่ละฟิลด์ควรเป็นไปตามแนวคิดอย่างน้อย IndexedField หรือ StoredField
สำหรับ Type T เป็น IndexedField เงื่อนไขต่อไปนี้จะต้องมีความพึงพอใจสำหรับวัตถุ m ของ type T :
| การแสดงออก | กำหนดให้มี | ผล |
|---|---|---|
m.name() | ประเภทเอาต์พุตจะต้องแปลงเป็น irs::string_ref | ค่าใช้เป็นชื่อคีย์ |
m.get_tokens() | ประเภทเอาต์พุตจะต้องแปลงเป็น irs::token_stream* | สตรีมโทเค็นใช้สำหรับการเติมในขั้นตอนการกลับตัว หากค่าเป็นฟิลด์ nullptr ได้รับการปฏิบัติเป็นแบบไม่จัดทำดัชนี |
m.index_features() | ประเภทเอาท์พุทจะต้องแปลงสภาพโดยปริยายเป็น irs::IndexFeatures | ชุดของคุณสมบัติที่ร้องขอสำหรับการประเมินผลระหว่างการจัดทำดัชนี เช่นอาจมีการร้องขอตำแหน่งการประมวลผลและความถี่ ต่อมาข้อมูลที่ประเมินสามารถใช้ในระหว่างการสืบค้นและการให้คะแนน |
m.features() | ประเภทเอาท์พุทจะต้องแปลงเป็น const irs::flags& | ชุดคุณสมบัติที่ผู้ใช้ให้ไว้จะเชื่อมโยงกับฟิลด์ เช่นอาจมีการร้องขอการจัดเก็บบรรทัดฐานของสนาม หลังจากนั้นข้อมูลที่เก็บไว้สามารถใช้ระหว่างการสืบค้นและให้คะแนน |
สำหรับ Type T ที่จะ StoredField เงื่อนไขต่อไปนี้จะต้องมีความพึงพอใจสำหรับวัตถุ m ของ Type T :
| การแสดงออก | กำหนดให้มี | ผล |
|---|---|---|
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 หรือผ่านตัวจัดการแพ็คเกจการแจกแจง: 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 หรือผ่านตัวจัดการแพ็คเกจการแจกแจง: 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 .หรือจุดสโนว์บอล _Root ที่ไดเรกทอรีต้นฉบับเพื่อสร้างร่วมกับ IRESEARCH
สำหรับการสร้างแบบคงที่:
- ใน MSVC Open: Build/Snowball.sln
- Set: Stemmer -> คุณสมบัติ -> คุณสมบัติการกำหนดค่า -> C /C ++ -> การสร้างรหัส -> Library Runtime = /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/snowballstem/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 ถูกทิ้งไว้ไม่ได้ unset แล้วไดเรกทอรีย่อยคำสั่งเฉพาะ locale จะถือว่าอยู่ในไดเรกทอรีการทำงานปัจจุบัน
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 SNOWBALL_ROOT_SUFFIX = X86_64-LINUX-GNU
สร้างไฟล์ build (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 Wrapper ให้การเข้าถึงวัตถุเครื่องอ่านไดเรกทอรี สำหรับตัวอย่างการใช้งานดู /python /สคริปต์
เพื่อสร้างเครื่องกำเนิดไฟฟ้า Swig Pyresearch เพิ่ม -DUSE_PYRESEARCH = ON TO TO CMAKE คำสั่งบรรทัดเพื่อสร้างเป้าหมาย PyResearch
เรียกใช้ Target Pyresearch-Install
ผู้ติดตั้ง ICU บางรุ่นดูเหมือนจะไม่สามารถให้บริการ DLL ทั้งหมดผ่านตัวแปรสภาพแวดล้อมของ Path ได้อาจจำเป็นต้องมีการปรับด้วยตนเอง
ใช้ Libiresearch เวอร์ชันที่ใช้ร่วมกัน ติดตั้ง iResearch ก่อนที่จะเรียกใช้ Pyresearch
การพึ่งพาของบุคคลที่สามภายนอกจะต้องมีให้กับไลบรารี IRESEARCH แยกกัน พวกเขาอาจติดตั้งผ่านระบบการจัดการแพ็คเกจการกระจายหรือสร้างจากแหล่งที่มาและตัวแปรสภาพแวดล้อมที่เหมาะสมที่ตั้งไว้ตามนั้น
v1.57.0 หรือใหม่กว่า (เธรดระบบสถานที่) ที่ใช้สำหรับฟังก์ชันการทำงานที่ไม่สามารถใช้ได้ใน STL (ไม่รวมฟังก์ชันการทำงานที่มีอยู่ใน ICU)
ใช้สำหรับการบีบอัด/การบีบอัดข้อมูลไบต์/สตริง
ใช้โดยเครื่องวิเคราะห์สำหรับการแยกวิเคราะห์การแปลงและข้อมูลสตริงโทเค็น
ใช้โดยเครื่องวิเคราะห์สำหรับการคำนวณคำศัพท์ (เช่นราก) สำหรับการจับคู่คำที่มีความยืดหยุ่นมากขึ้นจากภาษาที่ไม่ได้รับการสนับสนุนโดย 'สโนว์บอล' จะทำคำต่อคำ
ใช้สำหรับการเขียนการทดสอบสำหรับไลบรารี iResearch
ใช้สำหรับ JSON serialization/deserialization
ใช้โดยการวิเคราะห์ :: text_analyzer สำหรับการกรองคำเสียงที่ไม่ควรส่งผลกระทบต่อข้อความเช่น 'en' เหล่านี้เป็นปกติ 'a', ',', ฯลฯ ... ดาวน์โหลดจำนวนของรายการหยุดทั้งหมดเช่น: https://github.com/snowballstem/snowball-website/tree/master https://code.google.com/p/stop-words/ หรือสร้างรายการเฉพาะภาษาที่กำหนดเองของคำหยุดวางไฟล์ด้วย stopwords (utf8 เข้ารหัสด้วยหนึ่งคำต่อบรรทัดข้อความใด ๆ หลังจากช่องว่างแรก) ในไดเรกทอรีที่สอดคล้องกับภาษาของภาษา
| กรอง | คำอธิบาย |
|---|---|
| IRS :: by_edit_distance | สำหรับการกรองค่าตามระยะทาง Levenshtein |
| IRS :: BY_GRANULAL_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 :: ไม่ | การปฏิเสธบูลีนของตัวกรองหลายตัว |
ลิขสิทธิ์ (C) 2017-2023 ARANGODB GMBH
ลิขสิทธิ์ (c) 2016-2017 EMC Corporation
ซอฟต์แวร์นี้มีให้ภายใต้ใบอนุญาตซอฟต์แวร์ Apache 2.0 ที่มีให้ในไฟล์ License.md ข้อมูลการออกใบอนุญาตสำหรับผลิตภัณฑ์ของบุคคลที่สามที่ใช้โดยเครื่องมือค้นหา iResearch สามารถพบได้ใน third_party_readme.md