Module: IndexUtil::FragmentsFts
- Defined in:
- lib/index_util/fragments_fts.rb
Class Method Summary collapse
Class Method Details
.delete(db, fragment) ⇒ Object
16 17 18 19 20 21 22 23 |
# File 'lib/index_util/fragments_fts.rb', line 16 def delete(db, fragment) db[ "INSERT INTO fragments_fts(fragments_fts, rowid, fragment_document, content) VALUES ('delete', ?, ?, ?)", fragment.fetch(:id), fragment.fetch(:fragment_document), fragment.fetch(:content) ].insert end |
.insert(db, fragment) ⇒ Object
7 8 9 10 11 12 13 14 |
# File 'lib/index_util/fragments_fts.rb', line 7 def insert(db, fragment) db[ "INSERT INTO fragments_fts(rowid, fragment_document, content) VALUES (?, ?, ?)", fragment.fetch(:id), fragment.fetch(:fragment_document), fragment.fetch(:content) ].insert end |
.search(db, query, limit:) ⇒ Object
25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/index_util/fragments_fts.rb', line 25 def search(db, query, limit:) db.fetch(<<~SQL, query.to_s, Integer(limit)).all SELECT fragments.id, fragments.fragment_document, fragments.content, bm25(fragments_fts) AS score FROM fragments_fts JOIN fragments ON fragments.id = fragments_fts.rowid WHERE fragments_fts MATCH ? ORDER BY score LIMIT ? SQL rescue Sequel::DatabaseError [] end |