SOSL语句返回太多行

时间:2014-03-17 10:38:58

标签: salesforce apex

我对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

1 个答案:

答案 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个匹配并停止的帐户。

如果您有任何其他问题或者这对您有何帮助,请与我们联系。