我对SOSL声明有疑问。
此语句正常工作,返回的行数不超过2行。
List<List<SObject>> searchResultList = null;
searchResultList = [FIND :value IN PHONE FIELDS RETURNING Contact(id, Name, Phone, HomePhone, MobilePhone, OtherPhone, AssistantPhone), Account(id, Name, Phone), User(id, Name, Phone, MobilePhone, Extension) LIMIT 2];
在LIMIT中使用变量时,它返回的行数超过2行。
List<List<SObject>> searchResultList = null;
Integer maxsuggestions = 2;
searchResultList = [FIND :value IN PHONE FIELDS RETURNING Contact(id, Name, Phone, HomePhone, MobilePhone, OtherPhone, AssistantPhone), Account(id, Name, Phone), User(id, Name, Phone, MobilePhone, Extension) LIMIT :maxsuggestions];
我不知道我做错了什么。
感谢您的帮助:)
Greets Johny
答案 0 :(得分:2)
你需要在每组字段中加入LIMIT。例如,将您的代码放在上面,然后重写它:
List<List<sObject>> testval=null;
integer maxsuggestions=2;
string searchvalue='610';
testval=[FIND :searchvalue IN PHONE FIELDS RETURNING Contact(id, Name, Phone, HomePhone, MobilePhone, OtherPhone, AssistantPhone LIMIT :maxsuggestions), Account(id, Name, Phone LIMIT :maxsuggestions), User(id, Name, Phone, MobilePhone, Extension LIMIT :maxsuggestions)];
请记住,这将返回您在搜索字符串中指定的每个对象中的2个,这样您将获得两个用户,两个帐户和两个联系人。如果您在对象字段列表之外放置一个LIMIT,那么从我的测试中您需要提供一个值,因为某些原因变量似乎无法限制整个搜索查询。我测试了你的限制为2,5和10并且它们按预期工作但当我尝试在该查询限制位置(不在代码示例中)使用I或新变量时它不起作用。以下是将整个结果集限制为3个项目的示例。
List<List<sObject>> testval=null;
integer maxsuggestions=2;
string searchvalue='610';
testval=[FIND :searchvalue IN PHONE FIELDS RETURNING Contact(id, Name, Phone, HomePhone, MobilePhone, OtherPhone, AssistantPhone LIMIT :maxsuggestions), Account(id, Name, Phone LIMIT :maxsuggestions), User(id, Name, Phone, MobilePhone, Extension LIMIT :maxsuggestions) LIMIT 3];
这样做的方法是,如果它找到1个联系人和1个帐户,它也可以主要返回1个用户记录,但是如果它被限制为3并返回2个联系人,则它将返回1个匹配并停止的帐户。
如果您有任何其他问题或者这对您有何帮助,请与我们联系。