2016-06-15 111 views
0

我有名称和姓名属性的用户模型,我需要查询按名称搜索。 这个代码现在:Realm.io [java]按组合字段搜索

query 
.beginGroup() 
    .contains("name", search, Case.INSENSITIVE) 
    .or() 
    .contains("surname", search, Case.INSENSITIVE) 
.endGroup() 
.findAll(); 

但是,如果我想搜索杰里·史密斯,我会写“杰​​里SMI”,并不会得到我想要的东西,显然是因为有或。我应该怎么做?

我要创建并维护fullname字段,并将其设置为名称/姓氏的设置者并用它进行搜索,这是否是一条好路径?

回答

1

最简单的方法是添加名为“全名”的第三个字段,并在其中添加名称+姓氏。那么你只能这样搜索:

query.contains("full name", search, Case.INSENSITIVE).findAll(); 
+0

诚实,这听起来像解决方法,因为它需要维护,例如。看其他领域,不知何故,当领域转换对象到模型 – Fen1kz

+0

其他选项只是用空格分隔你的“搜索”,获取名称和姓氏,并像你一样搜索。但是你必须确保人们没有中间名。但我没有看到我提出的解决方案中的问题,您为什么认为它需要维护? –

+0

如何自动获取并更新此全名属性?把它放到名字/姓氏的setters中,如果我使用GSON,每次我解析时手动更新这个字段? – Fen1kz

-1
RealmResults<Event> toEdit = realm.where(Event.class) 
     .equalTo("name", day) 
     .equalTo("surname", month) 
     .findAll(); 

希望这会有所帮助!干杯!

+0

什么是事件,日期和月份?这不会匹配'jerry smi',只是完整的名字 –