SQLite全文搜索相关性排名

问题描述 投票:16回答:4

我正在使用sqlite3的fts4扩展名来实现全文索引和文本数据搜索。这很好用,但是我注意到结果根本没有相关性排名。我想我对露西恩也很习惯。我已经看到一些简短的建议,以使用matchinfo()结果编写自定义等级方法,但是我不清楚这是如何完成的,或者是否有任何复杂的示例。其他人如何处理?

search sqlite indexing full-text-search
4个回答
9
投票

look at the end of appendix a中有一个完整的示例。您需要做更多的工作才能获得良好的相关性排名,因为提供的功能仅对入门有用。例如,有了matchinfo(table,'pcnalx'),就有足够的信息来实现Okapi BM25


6
投票

[关于如何在C中实现Okapi BM25的文档似乎很缺乏,将实现留给用户练习似乎是不言而喻的事情。

好吧,我找到了一位程序员“ Radford'rads'Smith”的兄弟,他在GitHub上发表了这篇文章

https://github.com/rads/sqlite-okapi-bm25

尽管我现在正在研究BM25F的调整,但它仅实现BM25。...>

...。在这里。

https://github.com/neozenith/sqlite-okapi-bm25


1
投票

这里是Okapi BM25的实现。将此与SQLite.org中的建议结合使用将有助于您生成相关性排名的MATCH查询。这全部用VB.Net编写,并使用System.Data.SQLite函数调用查询。只要使用SQLiteFunction函数调用SQL代码,就可以从SQL代码中毫无问题地调用最后的自定义System.Data.SQLite


0
投票

[请看已经实现了BM25()的FTS5:https://sqlite.org/fts5.html#the_bm25_function

© www.soinside.com 2019 - 2024. All rights reserved.