2010-03-17 24 views
12

在我們的應用程序中有一個客戶列表和一個關鍵字列表(除其他外)。每個客戶都可以擁有多個關鍵字,但這不是強制性的。例如,一個客戶可以使用關鍵字「零售」和「連鎖」,一個客戶可以只有「承包商」,第三個客戶可以根本沒有。如何讓普通用戶以圖形方式設計布爾表達式

我希望讓用戶做出選擇基於這些關鍵字的客戶,但沒有寫(retail AND chain) or contractor and not wholesale

我想使它作爲人性化越好,最好只用「簡單」控件,如複選框,組合框等

有沒有人有任何建議如何設計?或者,也許有一些類似功能的應用程序示例?

回答

11

也許最簡單的用戶界面會是這樣的:

Find customers with 

All of these   Any of these   None of these 
[] retail    [] retail    [] retail 
[] chain    [] chain    [] chain 
[] contractor   [] contractor   [] contractor 
[] wholesale   [] wholesale   [] wholesale 
+0

明亮而簡單。它會限制「權力用戶」,因爲他們不能構建複雜的表達式,但對於99%的用戶來說,這就足夠了。謝謝:-) – 2010-03-17 21:34:40

+1

你應該在底部添加一個'{使用高級查詢}'按鈕。 – 2010-03-17 21:53:59

+1

爲了解釋99%的病例,我敢打賭,您可以更簡化它,併爲操作員(全部,任何,無)提供一個值列表和一個下拉列表。我想你會發現很少用戶需要同一個字段/屬性的多個操作符(例如,所有這些值或任何這些值)。你失去了一點靈活性,但它可以防止邏輯錯誤,如在Any和Not中選擇相同的值。 – 2010-03-18 12:46:56

0

MS Access數據庫有一個嚮導,使報告。指導用戶以直觀的方式構建SQL查詢。 TOAD也有一個嚮導來過濾查詢。

我希望它能幫助你。

1

也許您可以使用Google的高級搜索方式來指定搜索。幸運的是,用戶會熟悉這一點。

5

最終用戶對複雜的布爾結構有嚴重的麻煩。對此有很多研究(AND對他們來說很容易理解,但OR很難)。爲您的最終用戶提供對通用布爾表達式生成器的訪問,並且您正在跳下一個無底洞的兔子洞。

  • JacobM的解決方案是一個很好的簡化。
  • 我過去使用過的一個系統是搜索優化:只允許一個或兩個決策用於第一個搜索,然後允許最終用戶通過一系列單一決策削減結果( 「只顯示承包商」,「不是零售」等)。爲了使其運行良好,您通常需要一種簡單的方法讓他們維護最近的搜索,無論是通過選項卡式窗口列表還是其他內容。
  • 仔細考慮你的最終用戶。他們真的需要一個完整的布爾搜索生成器嗎?他們想要的實際數據是什麼?訪問這些數據是否需要搜索不會比任何限制更復雜?如果是這樣,請設計您的用戶界面以支持達到此限制。 JacobM的解決方案在某種程度上就是一個例子。
+0

要點1)我同意:-) 要點2)這是一種直觀和簡單的方法,但它需要在每次迭代後通過列表。在這種情況下太耗時。 點3)你是絕對正確的。我的用戶不需要製作複雜的表情。我可能會用JacobM的解決方案。它足夠靈活,至少可以滿足我目前的需求。 – 2010-03-17 21:39:00

2

更多的權力和靈活性比你可以用字段的固定列表實現,有query-by-example,一個完善的方法,使複雜的布爾表達式的建設。

對於真正以圖形的方式來指定無限的任意布爾表達式,也就是使用途徑隱喻一對夫婦:

雖然比SQL風格的布爾表達式更好,所有的這些都是比較複雜的用戶界面,可能至少需要一些練習用好。因此,任何這種即席查詢能力都應該被視爲一種「高級」功能。在大多數應用程序中,用戶有大量非常特定的查詢,這些查詢佔其絕大多數工作量(例如,拖欠的賬戶數超過n天)。一個簡單的對話框來選擇罐頭或半罐頭查詢是最好的,應該是默認的用戶界面。