Android Room关键字搜索列表

时间:2019-04-07 18:52:40

标签: android sqlite android-sqlite android-room

我需要搜索“房间”中的关键字列表。目前,我可以搜索单个关键字,例如:

@Query("SELECT * FROM customer where content LIKE '%' || :keyword || '%'  and status = 'published'")
LiveData<List<Customer>> getSearchResult(String keyword);

但是我如何以一种简单的方式搜索关键字列表。

有像IN这样的简单方法吗?

@Query("SELECT first_name, last_name FROM user WHERE region IN (:regions)")
public List<NameTuple> loadUsersFromRegions(List<String> regions);

我知道我可以手动为多个关键字建立查询,但是我想将Collection作为参数传递。

谢谢。

2 个答案:

答案 0 :(得分:0)

在 SQL 中,使用 FTS3 或 FTS4 很容易做到这一点,它是全文搜索,这两个是 SQL 中的最新功能,但我正在努力将其配置到我的 android 项目中。我对空间有点了解,但不足以给出准确的答案我自己仍在研究这个问题,但还没有找到答案。如果您找到配置它的方法,请告诉我。我已经在这个问题上讨论了几个星期,但我从对 SQL 的更多了解中知道需要的是 FTS 函数。

答案 1 :(得分:0)

我使用以下代码进行 FTS 搜索。用 OR

连接关键字
    String keywordAll = TextUtils.join("* OR *", keywordList);
    keywordAll = "*" + keywordAll + "*";

对于使用 MATCH 进行搜索的查询

WHERE Posts MATCH :keyword

希望这会对其他人有所帮助。