2013-01-17 56 views
2

在我的項目中,我有一個條件,我必須在同一列限定符上應用兩個SingleColumnValue過濾器。這兩個過濾器將檢查列限定符是否包含值'A'或值'B'。但是,過濾器似乎並沒有工作。對同一列限定符應用多個過濾器

FilterList filterList = new FilterList(Operator.MUST_PASS_ONE); 

SingleColumnValueFilter filter2 = new SingleColumnValueFilter(Bytes.toBytes("data"),    Bytes.toBytes("type"),CompareOp.EQUAL,Bytes.toBytes("A")); 
filter2.setFilterIfMissing(true); 
filterList.addFilter(filter2); 

SingleColumnValueFilter filter1 = new SingleColumnValueFilter(Bytes.toBytes("data"), Bytes.toBytes("type"), CompareOp.EQUAL, Bytes.toBytes("B")); filter1.setFilterIfMissing(true); 
filterList.addFilter(filter1); 

這樣做是否有錯誤?這是可能的,在同一個qualifier上應用兩個過濾器?有沒有其他解決方案?

在此先感謝。

+1

你的過濾器設置很好。你能否進一步闡述問題的癥結所在?請注意,如果滿足給定的條件,SingleColumnValueFilter將返回一行中的所有列。 I.e:行的單列值決定是否返回整行。 如果您只想檢索符合條件的列,請改用'ValueFilter'。 –

回答

0

解決上述問題的一個好方法是使用RegexStringComparator。

創建一個帶有所需匹配的RegexStringComparator並將其與SingleColumnValueFilter一起使用。