如何解决搜索引擎中的有效低基数AND
Lucene等搜索引擎如何在数据集中的术语对许多文档通用的情况下执行AND查询?例如,在倒排索引中:
define('WP_SITEURL','http://example.com');
term | document_id
---------------------
program | 1,2,3,5...
python | 1,4
code | 4
c++ | 4,5
出现在多个文档中,这意味着对program
的查询将需要对非常大的一组文档执行相交。
是否有一种方法可以执行AND查询,而不必采用可能包含数十亿个文档的术语的交集?
解决方法
“程序”一词存在于多个文档中,这意味着对程序和代码的查询将需要对非常大的一组文档执行相交。
是的。假设您有以下查询:
term1
AND
term2AND
term3
您首先需要计算每个正项的文档频率。您选择计数最低的单词。
您从查询中检索包含最不常用术语的文档。那些是候选人。然后,您可以使用有限状态机对查询进行筛选并为其打分。
所以数据库有几个子空间:
- 从引理或词干或术语到文档频率的映射(如tfidf)
- 允许检索包含给定引理的文档的实际倒排索引
- 取决于查询逻辑的先进程度,文档ID与文档的全文表示或一小袋单词之间的映射。
然后,过滤器+得分步骤可以并行发生
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。