whoosh.qparser.MultifieldParser()的多字段搜索示例代码
发布时间:2023-12-26 05:37:28
下面是使用whoosh.qparser.MultifieldParser()进行多字段搜索的示例代码:
from whoosh import index
from whoosh.fields import Schema, TEXT
from whoosh.qparser import MultifieldParser
# 定义schema
schema = Schema(title=TEXT(stored=True), content=TEXT(stored=True))
# 创建索引
ix = index.create_in("indexdir", schema)
# 获取writer对象
writer = ix.writer()
# 添加文档
writer.add_document(title="Document 1", content="This is the content of document 1")
writer.add_document(title="Document 2", content="This is the content of document 2")
# 提交写入的文档
writer.commit()
# 创建parser对象,设置要搜索的字段和索引
parser = MultifieldParser(["title", "content"], schema=ix.schema)
# 输入查询字符串
query_str = input("Enter your query: ")
# 解析查询字符串
query = parser.parse(query_str)
# 获取搜索器
searcher = ix.searcher()
# 搜索并获取匹配的文档
results = searcher.search(query)
# 打印匹配的文档
for hit in results:
print(hit["title"])
# 关闭搜索器和索引
searcher.close()
ix.close()
在这个例子中,我们首先定义了一个包含标题和内容字段的schema。然后,我们创建了一个索引,并使用writer对象添加了两个文档。接下来,我们创建了一个MultifieldParser对象,并设置要搜索的字段和schema。然后,我们输入一个查询字符串,并使用parser对象解析查询字符串。然后,我们获取一个搜索器对象,并使用query来搜索匹配的文档。最后,我们打印匹配的文档的标题。
这个例子展示了如何使用whoosh.qparser.MultifieldParser()进行多字段搜索。你可以根据你的具体需求修改和扩展这个例子。
