用代码实现传统倒排索引
时间: 2023-10-16 16:21:27 浏览: 35
这是一个可以回答的问题。传统倒排索引的实现可以通过以下代码:
```
class InvertedIndex:
def __init__(self):
self.index = {}
def add_document(self, doc_id, doc_text):
words = doc_text.split()
for word in words:
if word in self.index:
self.index[word].add(doc_id)
else:
self.index[word] = set([doc_id])
def search(self, query):
words = query.split()
result = set()
for word in words:
if word in self.index:
if not result:
result = self.index[word]
else:
result = result.intersection(self.index[word])
return result
```
这段代码定义了一个 InvertedIndex 类,其中包含了 add_document 和 search 两个方法。add_document 方法用于将文档添加到倒排索引中,search 方法用于根据查询词返回相关文档的 ID。
在 add_document 方法中,我们首先将文档分割成单词,然后遍历每个单词。如果这个单词已经在索引中,则将文档的 ID 添加到该单词对应的文档 ID 集合中;否则,创建一个新的文档 ID 集合,并将文档的 ID 添加到其中。
在 search 方法中,我们首先将查询词分割成单词,然后遍历每个单词。如果这个单词在索引中,则将该单词对应的文档 ID 集合与当前结果集求交集;否则,直接返回空集合。
通过这种方式,我们可以快速地根据查询词找到相关的文档。