我在我的应用程序中使用了hibernate search 3.3。
我的搜索表单包含文本字段,下拉列表,列表框等。我必须搜索单词,数字和日期。基本上是一个多字段搜索。
我的问题是我无法对具有字内空格的单词执行搜索。
例如:列表框有一组允许多选的员工姓名。所以在我的Java层中,我会得到一个数组中的值 - [Ankita Murthy,Ahana Gupta,Archita Patel]
现在,我必须在逗号上分隔这些名称,并将这些名称与数据库中的employee_name列匹配并检索结果。由于内部空格,匹配失败。
我做了一些研究,发现我们可以改变分析仪来实现这一点,但我无法理解。
还指导我改变分析器,使它们忽略大写/小写
答案 0 :(得分:0)
最好的方法是使用disjunction来制作OR,ilike来避免敏感,而MatchMode.ANYWHERE则用来在数据库的值中任意位置填充值。
您可以尝试使用或不使用MatchMode;但是,它有各种其他类型的开始,结束和精确。
Disjunction dis = Restrictions.disjunction();
dis.add(Restrictions.ilike("employee.name",value1,MatchMode.ANYWHERE);
....
criteria.add(dis);