2017-10-23 9 views
0

whooshで150MBのファイルを作成しようとしています。しかし、それは範囲外のエラーリストのインデックスを示している:私はエラーの原因となる行を引用している。つまり、for x in range(len(id)):です。論理的なインデックスレコードは、ドキュメントのID番号と同等です。IndexError:リストインデックスが範囲外(whoosh検索エンジンライブラリ内)のエラー

from whoosh import index 

from whoosh.fields import Schema,ID, TEXT,NUMERIC 
from whoosh import index 
from whoosh.index import create_in 

id = [] 
body = [] 
Score = [] 
count=0 
doc_path='C:/Users/Abhi/Desktop/My_Experiments_with_truth/extracted_xml.txt' 
with open(doc_path,'r+',encoding="utf8") as line: 
for f in line: 
    count=count+1 
    if f.startswith('Id : '): 
      a = f.replace('Id : ','') 
      id.append(a) 
      #print(a) 
    elif f.startswith('body : '): 
      b = f.replace('body : ','') 
      body.append(b) 
      #print(b) 
    elif f.startswith('Score :'): 
      c = f.replace('Score :','') 
      Score.append(c) 
      #print(c) 

if not os.path.exists("index"): 
     os.mkdir("index") 
#design the Schema 

schema=Schema(id_details=ID(stored=True),body_details=TEXT(stored=True),Score_details=NUMERIC(stored=True)) 

print(schema) 


#creation of the index 

ix = index.create_in("index", schema) 

writer = ix.writer() 
#Opening writer 


for x in range(len(id)): 
    writer.add_document(id_details=id[x],body_details=body[x],Score_details=Score[x]) 
writer.commit() 
print("Index created") 

答えて

0

問題はwhooshではなく、入力ファイルを解析していると思います。あなたが入力ファイルからデータを読み込んで矛盾している場合は、この行が失敗する原因のリスト、異なるサイズでid, body, Scoreを取得します:

writer.add_document(id_details=id[x],body_details=body[x],Score_details=Score[x]) 

あなただけのリストidの限界と比較されているので:range(len(id))

ファイルの解析を改善するか、少なくともxを最短リストの限界と比較してみてくださいid, body, Score

+0

あなたの答えをありがとう...しかし、私はすでに問題を解明しています...ファイル...私は完全にファイルを解析することができません..私は試したutf-8,16,32および64、latin-1、asciiのような異なるエンコーディングですが、すべてのエンコーディングは部分データだけを読み込みます。テキストは英語です。それはXMLファイルであり、テキストファイルを解析します。私はテキストファイルを持っています。そして元のXMLファイルは私には利用できません。問題のエンコーディングでエンコーディングをガイドできますか? –

関連する問題