![]() |
1
0
我喝了几杯酒,所以请耐心等待。 首先,我会做类似的事情 reverse index (信息量不大)。它非常接近你已经在做的事情,但需要额外的几个步骤。 首先,检查所有结果,并标记、截断、删除停止词、去头、合并、终止。看起来你已经完成了这项工作,但我要添加一个示例来完成。
接下来,我们要做的是生成一个以单词为关键字的映射,并返回该单词出现的文档索引列表。
我想你可以看到这将把我们带向何方……我们可以对搜索词进行标记,找到每个标记所属的所有文档,进行一些排名魔术,取前5名,等等等等,然后得到我们的结果。这通常是谷歌和其他搜索巨头进行搜索的方式。他们花费大量时间进行预计算,这样他们的搜索引擎就可以按数量级对候选人进行筛选,并发挥他们的魔力。 下面是一个示例片段。这需要大量的工作(请记住,我一直在喝酒),但它在>中运行了一百万条记录;。3ms。我通过生成2个字母的单词和短语来作弊,只是为了演示有时会发生冲突的查询。这真的不重要,因为查询时间平均与记录数量成正比。请注意,此解决方案会返回包含所有搜索词的记录。它不在乎背景或其他什么。你必须计算出排名(如果你现在关心的话),才能达到你想要的结果。
如果你愿意,你可以做一些改进。比如。。。排名!这个例子的全部目的是展示我们如何将100万个结果减少到100个左右。这个
|
![]() |
Rhys · 通过列表理解修改列表中的列表 7 年前 |
|
vikiridi · 嵌套循环,第二个循环基于第一个循环的长度 7 年前 |
![]() |
Sansk · 避免Python中的嵌套for循环 7 年前 |
![]() |
MidnightP · C#UWP填充和访问嵌套列表 7 年前 |
![]() |
CQM · 排序两个关联数组/堆栈 7 年前 |