當前位置:成語大全網 - 書法字典 - python如何進行高級檢索

python如何進行高級檢索

$ python baidu_qa.py?

輸入上下文,留下空行

def __init__(自身,數據文件,默認值=無):

self.datafile = datafile

self.default =默認

self.data = shelve。BsdDbShelf(bsddb . open(self . datafile,' c '))

def __del__(self):

self.data.sync()

self.data.close()

def __getitem__(self,k):

返回self.data.get(k,self.default)

def __setitem__(self,k,v):

self.data[k] = v

輸入和/或關鍵字進行查詢

和默認數據

[9]

或者得到k v

[8, 9, 10, 11]

$?

#?編碼:?utf-8

進口?關於

派特?=?重新編譯(" \w+")

def?makeIndex():

指數,?lineno?=?{},?0

什麽時候?真實:

在哪裏?=?原始輸入()

如果?ln:

lineno?+=?1

為了什麽?詞?在?patt.findall(ln):

index.setdefault(word,?[]).追加(行號)

否則:

破裂

回歸?指數

def?indexAndQuery(index,*參數):

找到了?=?沒有人

為了什麽?詞?在?參數:

明白了嗎?=?index.get(word,?[])

如果?不是嗎?獲得:

回歸?沒有人

如果?不是嗎?找到:

找到了?=?設置(獲得)

否則:

找到了?& amp=?設置(獲得)

如果?不是嗎?找到:

回歸?沒有人

回歸?列表(找到)

def?indexOrQuery(index,*參數):

找到了?=?集合()

為了什麽?詞?在?參數:

找到了?|=?set(index.get(word,?[]))

回歸?列表(找到)

def?lnparser(ln):

文字?=?patt.findall(ln.lower())

如果?len(words)& lt;2?還是?單詞[0]?不是嗎?在?('和','或'):

#?輸入的行不是以和,?還是開始?或者沒有給出要搜索的單詞。

回歸?沒有人

否則:

回歸?單詞[0],?單詞[1:]

cmdswitch?=?{

和':indexAndQuery,

還是':indexOrQuery,

}

打印?“進入?語境,?離開?被誰?空的?線”

指數?=?makeIndex()

打印?“進入?和/或?關鍵詞?去哪?查詢"

什麽時候?真實:

明白了嗎?=?lnparser(raw_input())

如果?不是嗎?獲得:

破裂

打印?cmd switch[get[0]](index,*得到了[1])