Вы успешно создаете одно случайное число. Вам просто нужно сделать это 10 раз, чтобы получить 10 разных чисел.
import java.util.Random;
class RandomNumbers {
public static void main (String [] args)
{
for (int i=0; i<10;i++){
int random = (int)(Math.random()* (50 + 1));
System.out.println (random);
}
}
Ваш код мне кажется нормальным. Я предлагаю небольшие изменения:
Поскольку вы перебираете все возможные комбинации, вы можете получить toLowerCase ()
в начале.
Кроме того, если точное совпадение уже произошло, вы не должны Не нужно выполнять еще один равно
.
result = result.toLowerCase();
searchStr = searchStr.toLowerCase();
String[] resultWords = result.split(" ");
String[] searchWords = searchStr.split(" ");
int score = 0;
for (String resultWord : resultWords) {
boolean exactMatch = false;
for (String searchWord : searchWords) {
if (!exactMatch && resultWord.equals(searchWord)) {
exactMatch = true;
score += 3;
} else if (resultWord.contains(searchWord))
score++;
}
}
Конечно, это очень базовый уровень. Если вас действительно интересует эта область информатики и вы хотите узнать больше о внедрении поисковых систем, начните с этих терминов:
Вы можете использовать регулярные выражения для поиска шаблонов и длины совпадающих шаблонов (для последней классификации / оценки).
Например, рассмотрим эту наивную модель оценки:
interface ScoreModel {
int startingScore();
int partialMatch();
int exactMatch();
}
...
int search(String result, String searchStr, ScoreModel model) {
String[] resultWords = result.split(" ");
String[] searchWords = searchStr.split(" ");
int score = model.startingScore();
for (String resultWord : resultWords) {
for (String searchWord : searchWords) {
if (resultWord.equalsIgnoreCase(searchWord)) {
score += model.exactMatch();
} else if (resultWord.toLowerCase().contains(searchWord.toLowerCase())) {
score += model.partialMatch();
}
}
}
return score;
}
Базовая оптимизация может быть выполнена путем предварительной обработки вашей базы данных: не разбивайте записи каждый раз на слова.
Создайте список слов (предпочитайте хеш-код или двоичное дерево для ускорения поиска в списке) для каждую запись во время добавления в БД, удалите все слишком короткие слова, строчные буквы и сохраните эти данные для дальнейшего использования.
Выполните те же действия со строкой поиска при запуске поиска (разделение, нижний регистр, очистка) и используйте эти слова список для сравнения с каждым списком слов записи.
1) Сначала вы можете отсортировать поисковые слова. Вы можете выйти из цикла, как только слово результата будет в алфавитном порядке после вашего текущего поискового слова.
2) Еще лучше, отсортируйте оба, а затем пройдитесь по обоим спискам одновременно, чтобы найти, где встречаются какие-либо совпадения.