Я немного поигрался с довольно простой, самодельной поисковой системой, и сейчас я вертлюсь с некоторым кодом сортировки по релевантности.
Это не очень красиво, но я не очень хорош, когда дело доходит до умных алгоритмов, поэтому я надеялся, что смогу получить какой-нибудь совет:)
По сути, я хочу, чтобы каждый результат поиска получал оценку в зависимости от того, сколько слов соответствует критериям поиска. 3 балла за точное слово и 1 балл за частичное совпадение
Например, если я ищу "зимний снег", это будет результат:
- зима снег => 6 баллов
- зима снег ing => 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++;
}
}