sqlite_bm25

Creator: coderz1093

Last updated:

0 purchases

TODO
Add to Cart

Description:

sqlite bm25

SQLite BM25 #
An Okapi BM25 implementation for the SQLite FTS4
(full-text search) extension.
Example #
import 'package:sqflite/sqflite.dart';
import 'package:sqlite_bm25/sqlite_bm25.dart';

example() async {
final table = 'bm25_test';

final db = await openDatabase(':memory:', version: 1,
onCreate: (Database db, int version) async {
await db.execute('CREATE VIRTUAL TABLE $table USING fts4(name)');
});

await db.insert(table, {'rowid': 1, 'name': 'Sam Rivers'});
await db.insert(table, {'rowid': 2, 'name': 'Samwise "Sam" Gamgee'});
await db.insert(table, {'rowid': 3, 'name': 'Sam'});
await db.insert(table, {'rowid': 4, 'name': 'Sam Seaborn'});
await db.insert(table, {'rowid': 5, 'name': 'Samwell "Sam" Tarly'});

var rows = await db.query(
table,
columns: [
'name',
'matchinfo($table, \'$bm25FormatString\') as info',
],
where: '$table MATCH ?',
whereArgs: ['sam'],
);

rows = rows.map((row) {
return {
'name': row['name'],
'rank': bm25(row['info']),
};
}).toList();

rows.sort((a, b) => a['rank'].compareTo(b['rank']));

final names = rows.take(3).map((r) => r['name']).join(', ');

print(names);

await db.close();
}
copied to clipboard

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Files In This Product:

Customer Reviews

There are no reviews.