gpt4 book ai didi

python - 创建文件夹中每个文件内容的索引

转载 作者:太空宇宙 更新时间:2023-11-04 09:12:18 25 4
gpt4 key购买 nike

我正在用 Python 制作一个搜索工具。

它的目标是能够按内容搜索文件。 (我们主要谈论的是源文件、文本文件,而不是图像/二进制文件——即使在它们的元数据中搜索会是一个很大的改进)。现在我不使用正则表达式,随意的纯文本。

这部分算法效果很好!

问题是我意识到我主要在相同的几个文件夹中搜索,我想找到一种方法来为文件夹中每个文件的内容建立索引。并且能够尽快知道我正在搜索的句子是否在 xxx.txt 中,或者它是否不存在。现在的想法是为每个文件维护一个校验和,使我能够知道它是否包含特定字符串。

你知道任何接近这个的算法吗?

我不需要 100% 的成功率,我更喜欢小索引而不是 100% 成功的大索引。这个想法是提供一个通用工具。

编辑:明确地说,我想搜索文件内容的一部分。因此,对其所有内容进行 md5 哈希并将其与我正在搜索的内容进行比较并不是一个好主意;)

最佳答案

这里我使用 whoosh lib 来进行搜索/索引..上半部分是索引文件,下半部分是演示搜索..

#indexing part

from whoosh.index import create_in
from whoosh.fields import *
import os
import stat
import time

schema = Schema(FileName=TEXT(stored=True), FilePath=TEXT(stored=True), Size=TEXT(stored=True), LastModified=TEXT(stored=True),
LastAccessed=TEXT(stored=True), CreationTime=TEXT(stored=True), Mode=TEXT(stored=True))

ix = create_in("./my_whoosh_index_dir", schema)
writer = ix.writer()



for top, dirs, files in os.walk('./my_test_dir'):
for nm in files:
fileStats = os.stat(os.path.join(top, nm))
fileInfo = {
'FileName':nm,
'FilePath':os.path.join(top, nm),
'Size' : fileStats [ stat.ST_SIZE ],
'LastModified' : time.ctime ( fileStats [ stat.ST_MTIME ] ),
'LastAccessed' : time.ctime ( fileStats [ stat.ST_ATIME ] ),
'CreationTime' : time.ctime ( fileStats [ stat.ST_CTIME ] ),
'Mode' : fileStats [ stat.ST_MODE ]
}
writer.add_document(FileName=u'%s'%fileInfo['FileName'],FilePath=u'%s'%fileInfo['FilePath'],Size=u'%s'%fileInfo['Size'],LastModified=u'%s'%fileInfo['LastModified'],LastAccessed=u'%s'%fileInfo['LastAccessed'],CreationTime=u'%s'%fileInfo['CreationTime'],Mode=u'%s'%fileInfo['Mode'])

writer.commit()


## now the seaching part
from whoosh.qparser import QueryParser
with ix.searcher() as searcher:
query = QueryParser("FileName", ix.schema).parse(u"hsbc") ## here 'hsbc' is the search term
results = searcher.search(query)
for x in results:
print x['FileName']

关于python - 创建文件夹中每个文件内容的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13497607/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com