亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

python whoosh 索引大文件的時間太長

python whoosh 索引大文件的時間太長

慕容森 2021-11-16 14:49:30
我有一個包含約 900 萬行的 CSV 文件。我希望能夠快速從該文件中搜索一行。我決定使用 python whoosh 來索引這些數據,然后搜索它,如下所示。schema = Schema(content=TEXT(stored=True, analyzer=RegexTokenizer() | LowercaseFilter() | CharsetFilter(accent_map)))if not os.path.exists("index"):    os.mkdir("index")ix = create_in("index", schema)ix = open_dir("index")writer = ix.writer()with open(file_path, 'r', encoding='utf-8') as file:    for line in file:        writer.add_document(content=line)writer.commit()我不確定這是否是索引數據的正確/最快方法。更改架構是否會使索引更快?如果不是,使用 whoosh 或其他索引庫的一般想法是否適合像這樣的大文件?好消息是索引只會做一次,所以我愿意等待這是否會提供快速的搜索時間。我在全文搜索方面沒有經驗。有人會知道,通過我的設置,索引需要多長時間?這是我的 csv 示例:ID,TYPE,TEXT,ID21058895,1,Be,10678061058895,2,Hosl,1019381058895,3,370,None1058895,4,Tnwg,10582
查看完整描述

2 回答

?
守著一只汪

TA貢獻1872條經驗 獲得超4個贊

你的方法沒問題。與全文搜索的權衡是您用快速查詢換取慢速索引,因此您可以預先完成盡可能多的工作。

與 Lucene 及其生態系統(Solr、Elasticsearch)相比,Whoosh 索引非常慢。從我的 PC 上的一些快速測試來看,它每秒索引大約 540 行。您可以在大約 4.5 到 5 小時內索引 900 萬行。添加的字段越多,尤其是要分析的字段,所需的時間就越長,因此請確保僅分析必要的字段并僅索引所需的字段。

如果您計劃多次查詢此索引,那么在時間上的投資是值得的,并且您的查詢應該相當快。如果你需要經常索引大文件,而且每次都等不及 5 個小時,那么可以考慮切換到 Lucene、Solr 或 Elasticsearch。

您的數據似乎也很簡單。如果精確的布爾查詢就足夠了,Pandas 查詢允許您更快地搜索 DataFrame。Pandas 提供了用于基本文本處理的快速矢量化方法,您可以將其用于諸如小寫、停用詞移除、字符映射和正則表達式之類的事情。

如果您需要評分和 NLP 工具(例如詞干提取和分詞),您才真正需要全文搜索。


查看完整回答
反對 回復 2021-11-16
?
瀟湘沐

TA貢獻1816條經驗 獲得超6個贊

我在這里分享了這個確切問題的官方文檔頁面的一部分(https://whoosh.readthedocs.io/en/latest/batch.html)。請參閱其他方法的鏈接,例如增加內核數量。


增加whoosh索引器的 RAM 內存量。默認設置為僅 128 MB:


    from whoosh import index


    ix = index.open_dir("indexdir")

    writer = ix.writer(limitmb=2048)

為分析器提供更多緩存,否則會顯著減慢索引速度。


    w = myindex.writer()

    # Get the analyzer object from a text field

    stem_ana = w.schema["content"].format.analyzer

    # Set the cachesize to -1 to indicate unbounded caching

    stem_ana.cachesize = -1

    # Reset the analyzer to pick up the changed attribute

    stem_ana.clear()


查看完整回答
反對 回復 2021-11-16
  • 2 回答
  • 0 關注
  • 316 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號