Dear Sir/Madam:
I intend to get the suggestions from a SearchViewModel with multiple search resources with 4 FeatherLayers (ActiveSourceIndex = -1).
I tried to do in the following way:
const suggestResults: __esri.SearchViewModelSuggestResponse =
await searchVM.suggest(searchTerm);
let isEmpty = true; // Are suggestions empty?
for (let i = 0; i < suggestResults.numResults; ++i) {
if (!suggestResults.results) continue;
if (!suggestResults.results[i]) continue;
const suggestions = suggestResults.results[i].results;
console.error('Number of Suggestions = ' + suggestions.length);
if (suggestions.length > 0) {
isEmpty = false;
// Yes, got it, This is what I intend to get from SearchViewModel
}
}
It works for short search term (less than 11 or 12 characters probably).
But if the search term is more than 12 characters long, I got no suggestions from SearchViewModel.suggest() call.
However, If I use the ArcGIS's SearchWidget to hook to the same search sources, SearchWidget always could get suggestions even the search term is more than 12 characters or longer.
I used SearchWidget's SearchViewModel to do SearchWidget.viewModel.suggest(searchTerm), i got the same results as I did from my SearchViewModel, it will got no suggestions when the search term is longer than 12 characters or longer.
But ArcGIS's SearchWidget works perfectly

While I used SearchWidget.viewModel, I could only get suggestion for "LANE COVE B" or shorter.
Probably SearchWidget get the suggestions not from SearchViewModel.suggest(searchTerm)?
I suspect ArcGIS's SearchWidget just listen to the 'suggest-complete' event, and parse the event[] and get the suggestions as below:
searchWidget.on('suggest-complete', function (event) {
// The results are stored in the event Object[]
console.error('Results of suggest: ', event.numResults);
console.error('event source index = ' + event.activeSourceIndex);
console.error('event search term = ' + event.searchTerm);
console.error('event results number = ' + event.results.length);
if (event.results.length > 0) {
for (let i = 0; i < event.results.length; ++i) {
console.error(
'evernt results[' +
i +
'].results.length = ' +
event.results[i].results.length
);
if (event.results[i].results.length > 0) {
console.error(
'TEXT = ' + event.results[i].results[0].text
);
console.error(
'KEY = ' + event.results[i].results[0].key
);
console.error(
'SOURCE Index = ' +
event.results[i].results[0].sourceIndex
);
}
}
}
});
I am not why SearchViewModel does not work for long search term?
Is relevant server configuration? Or my SearchViewModel not properly configured? or suggest(searchTerm) has different arguments to call?
Your kind assistance would be greatly appreciated.
Ted