Я немного поиграл с довольно простой, самодельной поисковой системой, и теперь я кручусь с некоторым кодом сортировки релевантности.Оптимизация простого алгоритма поиска
Это не очень красиво, но я не очень хорошо, когда дело доходит до умных алгоритмов, так что я надеялся, что я мог бы получить некоторые советы :)
В принципе, я хочу, чтобы каждый результат поиска, чтобы получить выигрыш на основе сколько слов соответствует критериям поиска. 3 балла за точным словом и одна точка для частичного совпадения
Например, если я ищу «зимний», это будут результаты:
- зимойснег => 6 баллов
- зимаснег ИНГ => 4 балла
- зима земля снег => 4 балла
- зима ВС => 3 балла
- зима земля снег Ing => 2 балла
Вот код:
String[] resultWords = result.split(" ");
String[] searchWords = searchStr.split(" ");
int score = 0;
for (String resultWord : resultWords) {
for (String searchWord : searchWords) {
if (resultWord.equalsIgnoreCase(searchWord))
score += 3;
else if (resultWord.toLowerCase().contains(searchWord.toLowerCase()))
score++;
}
}
В чем проблема, которую вы ищете? это слишком медленно? использует большие объемы памяти? какую оптимизацию вы имели в виду? – Yuval
Speed почти все. Оказывается, это может быть база данных, которая, однако, является «узким местом». – Ace