<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          TantinyRuby 全文搜索引擎庫

          聯(lián)合創(chuàng)作 · 2023-09-29 03:12

          Tantiny是一個基于 Tantivy 的 Ruby 的最小化全文搜索庫。當你手頭的任務(wù)需要全文搜索,但配置一個完整的分布式搜索引擎會比任務(wù)本身花費更多的時間時,它是非常好的選擇。

          即使你已經(jīng)在你的項目中使用了這樣的引擎(實際上這是很有可能的),使用 Tantiny 仍然可能更容易,因為與 Solr 和 Elasticsearch 不同,它不需要任何東西來工作(沒有單獨的服務(wù)器或進程或其他什么),它是純粹的可嵌入的。所以,當你發(fā)現(xiàn)自己在使用你所選擇的搜索引擎會很麻煩/不方便,或者需要額外的設(shè)置時,你總是可以回到一個快速和骯臟的解決方案,但還是很靈活和快速。

          Tantiny 并不完全是對 Tantivy 的 Ruby 綁定,但它試圖接近。主要理念是提供對 Tantivy 倒排索引的低級訪問,但具有漂亮的 Ruby 風格的 API、合理的默認設(shè)置和附加功能。

          示例:

          index = Tantiny::Index.new("/path/to/index") { text :description }
          
          index << { id: 1, description: "Hello World!" }
          index << { id: 2, description: "What's up?" }
          index << { id: 3, description: "Goodbye World!" }
          
          index.reload
          
          index.search("world") # 1, 3
          

          Tantiny是線程安全的,這意味著你可以在線程之間安全地共享索引的單一實例。你還可以生成可以寫入和讀取同一索引的單獨進程。然而,雖然從索引中讀取應(yīng)該是并行的,但向其寫入?yún)s不是。每當你調(diào)用事務(wù)或任何其他修改索引的操作(即<<和刪除),它將在操作期間鎖定索引或等待另一個進程或線程釋放鎖定。唯一的例外是當另一個進程的索引具有獨占編寫器在某處運行時,在這種情況下修改索引的方法將立即失敗。

          因此,如果你想避免阻塞調(diào)用,最好是有一個寫入進程和多個讀取進程。正確的方法是在初始化索引時將 exclusive_writer 設(shè)置為 true。

          index = Tantiny::Index.new("/path/to/index", exclusive_writer: true) {}

          這樣 index writer 只會被獲取一次,這意味著它的內(nèi)存和索引線程也只會被分配一次。否則每次執(zhí)行寫入操作時都會獲取一個新的 index writer。

          瀏覽 22
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          編輯 分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          編輯 分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  午夜精品秘 一区二区 | 麻豆一级A片久久久乱码 | 午夜毛片 | 看一级黄色片 | GOGO大胆无码人体免费视频 |