2013-06-24 87 views
2

默認情況下,多個單詞搜索被分割成多個單獨文件。我如何覆蓋這個默認值並讓whoosh搜索完全匹配?儘管它最有可能受到支持,但我無法在google/whoosh文檔中找到。在whoosh中找到多個單詞的完全匹配

此外,搜索完全匹配的搜索結果是否會比同一個多詞搜索有更好或更差的性能?

回答

1

使用phrase queries(即,將雙引號放在要在查詢中匹配的單詞旁邊),例如, :

"to be or not to be" 

但是,如果您正在尋找在場上whoosh.fields.TEXT類型的這僅適用。

至於表現的東西,短語搜索一定比「經典搜索」慢。要進行詞組搜索,首先需要檢索包含在查詢中指定的所有詞條的所有文檔(這是「經典搜索」部分),然後比較查詢和文檔之間的詞語位置檢查它是否看起來像一場比賽。

+0

如果找到所有包含第一個(或最長)單詞的文檔,然後檢查緊接在(或前面)單詞之後的下一個n,是不是更好的實現? – maged

+0

其實,我明白了爲什麼你的描述在大多數情況下會更快,而我的情況只會在例外情況下。 – maged

+1

@maged:我沒有詳細地檢查過Whoosh代碼,但很可能當您發出「詞組查詢」時,它已經正確執行了這項工作(如您所描述的那樣)。 – michaelmeyer