2016-05-11 45 views
1

我在做什麼:在Android中進行自定義搜索,可以跨多列查看用戶的建議。將多個列映射到一列以獲取自定義搜索建議

我可以將單個「主題」列映射到系統指定的SUGGEST_COLUMN_TEXT_1,而且工作起來非常出色,我甚至會將主題分組以刪除重複條目。但是,我想要的是將作者名字||''作者姓氏'(將這兩個字符串連接爲單個行條目)和「作者組名稱」包含到單個SUGGEST_COLUMN_TEXT_1(和然後弄清楚如何根據任何重複進行分組?)。

我想過使用一個HashMap,但查詢構建器調用了一個字符串,所以我不知道這會工作。

這可能嗎?不,我確定它是。有任何想法嗎?也許是一個聯盟?我已經評論了下面的一些代碼,但似乎並不奏效。

private static final HashMap<String, String> SEARCH_PROJECTION_MAP; 
    static { 

     SEARCH_PROJECTION_MAP = new HashMap<String, String>(); 
     SEARCH_PROJECTION_MAP.put("_id", "_id"); 
     SEARCH_PROJECTION_MAP.put(SearchManager.SUGGEST_COLUMN_TEXT_1, 
       ExternalDbContract.QuoteEntry.TOPIC 
//      + " OR \"" + ExternalDbContract.QuoteEntry.AUTHOR_FIRST_NAME 
//      + "\" || \' \' || \"" + ExternalDbContract.QuoteEntry.AUTHOR_LAST_NAME 
//      + "\" OR \"" + ExternalDbContract.QuoteEntry.AUTHOR_GROUP_NAME 
         + "\" AS " 
         + SearchManager.SUGGEST_COLUMN_TEXT_1);  
    } 

至於原始的SQL去,我覺得這就是我要完成的:

"SELECT Topic FROM quotes WHERE Topic LIKE " + selectionArgs[0] + 
       "UNION SELECT \"Author First Name\" || ' ' || \"Author Last Name\" FROM quotes WHERE \"Author First Name\" LIKE " + selectionArgs[0] + " OR " + "\"Author Last Name\" LIKE " + selectionArgs[0] + 
       "UNION SELECT \"Author Group Name\" FROM quotes WHERE \"Author Group Name\" LIKE " + selectionArgs[0] + 
       "ORDER BY ASC LIMIT 10"; 

我怎麼可能做到這一點與Android的定製建議格式?

回答

0

最後,我放棄了投影映射,直接進入原始SQL。 一些注意事項 - 我的列名中有空格。不要這樣做。 '%a%'表示用戶查詢,在代碼中它實際上是selectionArgs [0]。您會注意到我有兩個CASE語句,一個是建議,另一個是將點擊的建議用作意圖數據字符串而不是行ID。在我的情況下需要。

像這樣:

SELECT CASE WHEN 「作者名」 LIKE '%的%',那麼 「作者名」 || ''|| 「作者姓氏」 當「作者姓氏」LIKE'%a%'THEN「作者姓名」 ''|| 「作者姓」 WHEN 「作者羣名」 LIKE '%A%',那麼 「作者羣名稱」 WHEN主題LIKE '%A%',那麼主題 END AS suggest_text_1,

CASE WHEN「作者名「LIKE'%a%'THEN」作者名「」 ''|| 「作者姓氏」 當「作者姓氏」LIKE'%a%'THEN「作者姓名」 ''|| 「作者姓」 WHEN 「作者羣名」 LIKE '%A%',那麼 「作者羣名稱」 WHEN主題LIKE '%A%',那麼主題 END AS suggest_data_intent_id,_id

FROM報價 WHERE(主題LIKE'%a%' 或「作者名」LIKE'%a%'
或「作者組名」LIKE'%a%' 或「作者姓」LIKE'%a%') GROUP BY suggest_text_1 ORDER BY suggest_text_1 ASC

相關問題