问题 Autocomptete
Doug正在使用谷歌并且惊讶于看到autocomptete功能如何使用autocomptete搜索数据库以查找可以使用用户提供的字符(作为输入)形成的所有可能单词对于ex如果用户键入&#c;'在搜索栏中,建议将是
•cisco
•cist
•cissp
•cism
•cisa 他想在他的搜索引擎中应用相同的功能。在他的原型中,他拿了一个字符串作为域,其中包含他可以搜索的所有单词。 作为他的设计师,你必须告诉他如果输入字段中输入了一些东西,他将提供多少autocomptete选项。
这是我对以下问题的代码。
query: {
bool: {
should: { wildcard: { field1: "*" + input + "*"}},
should: { wildcard: { field1: "*" + input + "*"}}
}
}
但我的解决方案只传递了一个测试用例以及它失败的复杂性案例。 我无法弄清楚它是什么问题。
答案 0 :(得分:0)
似乎你错过了边界条件。 下面是代码。
public static String[] autoComplete(String input1, String input2){
List<String> listOfPredictions = new ArrayList<String>();
String[] emptyArr = new String[0];
if(isEmpty(input1) || isEmpty(input2)){
return emptyArr;
}
input1 = input1.trim();
input2 = input2.trim();
String tokenizer = " " + input2;
int fromIdx = 1;
if(input1.startsWith(input2)){
fromIdx = input1.indexOf(" ");
listOfPredictions.add(input1.substring(0, fromIdx));
}
while(fromIdx > 0){
fromIdx = input1.indexOf(tokenizer, fromIdx) + 1;
if(fromIdx > 0){
listOfPredictions.add(input1.substring(fromIdx, input1.indexOf(" ", fromIdx)));
}
}
return listOfPredictions.toArray(emptyArr);
}
private static boolean isEmpty(String str){
return str == null || str.trim().length() == 0;
}