我正在使用sqlite3的fts4扩展名来实现全文索引和文本数据搜索。这很好用,但是我注意到结果根本没有相关性排名。我想我对露西恩也很习惯。我已经看到一些简短的建议,以使用matchinfo()结果编写自定义等级方法,但是我不清楚这是如何完成的,或者是否有任何复杂的示例。其他人如何处理?
look at the end of appendix a中有一个完整的示例。您需要做更多的工作才能获得良好的相关性排名,因为提供的功能仅对入门有用。例如,有了matchinfo(table,'pcnalx')
,就有足够的信息来实现Okapi BM25。
[关于如何在C中实现Okapi BM25的文档似乎很缺乏,将实现留给用户练习似乎是不言而喻的事情。
好吧,我找到了一位程序员“ Radford'rads'Smith”的兄弟,他在GitHub上发表了这篇文章
https://github.com/rads/sqlite-okapi-bm25
尽管我现在正在研究BM25F的调整,但它仅实现BM25。...>
...。在这里。
这里是Okapi BM25的实现。将此与SQLite.org中的建议结合使用将有助于您生成相关性排名的MATCH查询。这全部用VB.Net编写,并使用System.Data.SQLite
函数调用查询。只要使用SQLiteFunction
函数调用SQL代码,就可以从SQL代码中毫无问题地调用最后的自定义System.Data.SQLite
。
[请看已经实现了BM25()的FTS5:https://sqlite.org/fts5.html#the_bm25_function