为了确定相关性得分的任何串出一组给定对查询串串的,你的情况“红色赛车”,你需要一个信息检索相似性度量。
Okapi BM25是这样的相似性度量。由于这个深入探究文本索引的领域,您可能需要做一些学习,然后才能自己实现它。
下面是该算法
d的定义是文档,即,在你的情况单行。 Q是查询,其中包括所有的Q_I,并IDF是inverse document frequency。
这个算法背后的直觉是创造出得分每学期Q中Q_I,这是基于总出现在所有字符串上,即串存在很多获得排名较低,因为他们没有携带信息(大的英文文本通常会像be,have等字符串),并根据字符串中出现的内容进行搜索。这意味着如果一个小文本包含一个给定的词,例如火箭,经常。这个术语对于小文本来说更为重要,即使这个术语出现次数是经常出现的次数的2倍,那么它的长度也会比10倍长。
如果您想了解更多信息,可以阅读链接wiki文章,或阅读下列纸张的一个开始:Inverted files for text search engines。
如果你不想自己做搜索。您可以使用图书馆,例如whoosh.因为它说,在其网站上
嗖是一种快速,多特征的全文索引和搜索库 纯Python实现
进一步使其具有
可插拔评分算法(包括BM25F),文本分析,存储, 发帖格式等。
这意味着您可以更改相似性度量,它可以确定相关性,以便获得您的应用程序所需的行为。至少在某种程度上。
在执行搜索时,必须首先创建一个索引,这被描述为here。之后,您可以根据需要查询索引。有关更多信息和图书馆帮助,请参阅文档。
您可能正在寻找类似[编辑距离](https://en.wikipedia.org/wiki/Edit_distance) – languitar
欢迎来到SO。你能告诉我们你到目前为止尝试过的代码吗? –
“输出是按相关性排序”,您应先定义相关性 –