2011-12-13 57 views
0

我快要瞎走在這個問題主演,所以我必須要問:我在哪裏錯過了一個參數?

我有1線索:重新安排代碼,使得不同的錯誤信息:

我得到的錯誤:min_analyzer = SpaceSeparatedTokenizer()| LowercaseFilter()| mitt_filter() 類型錯誤:_ 呼叫 _()到底需要2個參數(給定1)

從這個代碼:

import sqlite3 
from whoosh.fields import Schema, TEXT, ID 
from whoosh.index import create_in 
from whoosh.analysis import SpaceSeparatedTokenizer 
from whoosh.analysis import StopFilter 
from whoosh.analysis import LowercaseFilter 

mitt_filter = StopFilter(stoplist=frozenset(['and', 'is', 'it', 'an', 'as', 'at', 'have',  'in', 'yet', 'if', 'from', 'for', 'when', 'by', 'to', 'you', 'be', 'we', 'that', 'may', 'not', 'with', 'a', 'on', 'your', 'this', 'of', 'us', 'will', 'can', 'the', 'or', 'are', u'og', u'i', u'-', u'\\xa0', u'for', u'av', u'til', u'p\\xe5', u'the', u'and', u'as', u'med', u'er', u'en', u'of', u'to', u'har', u'Vi', u'kontakt', u'som', u'\\xe5', u'v\\xe5re', u'vi', u'in', u'oss', u'a', u'det', u'at', u'is', u'\\u2013', u'/', u'\\xbb', u'kan', u'by', u'skal', 'fra', u'ut', u'with', u'be', u'v\\xe5rt', u'mer', u'du', u'\\xa9', u'us', u'on', u'hopp', u'ogs\\xe5', u'Hopp']), minsize=2, maxsize=None, renumber=False) 

min_analyzer = SpaceSeparatedTokenizer() | LowercaseFilter() | mitt_filter() 

schema = Schema(Hoveddomene=ID, innhold=TEXT (stored=True,  analyzer=min_analyzer(removestops=False, positions=True)), webadresse=ID) 

ix = create_in('/Users/Sverdrup/virtualenv-1.6.1/whoosh/whoosh directory/', schema) 

如果我重新排列代碼如下所示:

import sqlite3 

from whoosh.fields import Schema, TEXT, ID 
from whoosh.index import create_in 
from whoosh.analysis import SpaceSeparatedTokenizer 
from whoosh.analysis import StopFilter 
from whoosh.analysis import LowercaseFilter 

min_analyzer = SpaceSeparatedTokenizer() | LowercaseFilter() | StopFilter(stoplist=frozenset(['and', 'is', 'it', 'an', 'as', 'at', 'have', 'in', 'yet', 'if', 'from', 'for', 'when', 'by', 'to', 'you', 'be', 'we', 'that', 'may', 'not', 'with', 'a', 'on', 'your', 'this', 'of', 'us', 'will', 'can', 'the', 'or', 'are', u'og', u'i', u'-', u'\\xa0', u'for', u'av', u'til', u'p\\xe5', u'the', u'and', u'as', u'med', u'er', u'en', u'of', u'to', u'har', u'Vi', u'kontakt', u'som', u'\\xe5', u'v\\xe5re', u'vi', u'in', u'oss', u'a', u'det', u'at', u'is', u'\\u2013', u'/', u'\\xbb', u'kan', u'by', u'skal', 'fra', u'ut', u'with', u'be', u'v\\xe5rt', u'mer', u'du', u'\\xa9', u'us', u'on', u'hopp', u'ogs\\xe5', u'Hopp']), minsize=2, maxsize=None, renumber=False) 

schema = Schema(Hoveddomene=ID, innhold=TEXT (stored=True, analyzer=min_analyzer(removestops=False, positions=True)), webadresse=ID) 

ix = create_in('/Users/Sverdrup/virtualenv-1.6.1/whoosh/whoosh directory/', schema) 

這個線索讓我相信它是stopFilter函數的聲明是錯誤的,但我看不到它是?

任何幫助將不勝感激!

我收到以下錯誤:架構=架構(Hoveddomene = ID,innhold = TEXT(存儲= True時,分析儀= min_analyzer(removestops =假,位置= TRUE)),webadresse = ID) 類型錯誤:_ 調用 _()至少需要2個參數(1給出)

+0

要進行調試,請嘗試在參數和/或二元運算符之間插入換行符。這可能會爲您提供有關錯誤位置的更準確信息。 – 2011-12-13 19:51:11

回答

1

你可能只是想mitt_filter,否則你的實例化對象,這是你的第二個不同樣本上執行__call__

min_analyzer = SpaceSeparatedTokenizer() | LowercaseFilter() | mitt_filter 

至於你的第二個樣品是比較正確的,那錯誤是說你也許不應該把它發送到Schema構造函數時傳遞參數給min_analyzer。我基本上說analyzer=min_analyzer可能更正確,而removestopspositions論點應該在其他地方提供。

+0

謝謝o'holy救主。你的名字邁克爾·默裏克爾將在新人的土地上回蕩千古,永恆! – Rookie 2011-12-13 20:08:15

1

analyzer參數Schem構造函數不正確。分析器必須是__call__方法的函數或類,因此您的錯誤約爲call

http://packages.python.org/Whoosh/analysis.html

+0

我猜TJD的答案和邁克爾默裏克爾一樣,但是對編程來說是新手,我真的不能確定一百。因此,平心而論,非常感謝TJD以及他的+1,因爲他的時間對他有幫助和慷慨。 (正如我在堆棧溢出中解釋聲譽系統時所說的那樣,我完全處於+1這個使用它的目的中,對吧?!?) – Rookie 2011-12-13 20:13:16