Прежде всего, я прошу прощения за мою грамматику, так как английский - не мой родной язык, это мой второй вопрос на этот день, и это уже довольно неудобно.
Я просто хочу спросить, как я могу добавить в свое приложение функцию поиска, например, поиск по ключевым словам с фильтрацией?
Я могу выполнять незначительные функции поиска, например вводить слова в строку поиска, и результаты будут отображаться в таблице.
Что я действительно хочу знать, так это как сделать что-то подобное ...
Скажем, если я ввожу слово «бронте» и слово «красивый», а тема «Английский язык» выбрана из поля со списком, когда я нажимаю GO, результат, отраженный в табличном представлении, должен быть «мышей и людей» и «грозовой высоты»
Как мне организовать свою таблицу в базе данных? поскольку я думаю, что столбец "ключевые слова" не следует размещать таким образом. У меня нет решений.
мой код на момент написания (но действительно не соответствует тому, что мне нужно):
Создание tableview с помощью этого примера кода:
public void loadDatabaseData(){
String query = "select * from table_sample";
try {
preparedStatement = connection.prepareStatement(query);
rs = preparedStatement.executeQuery();
while(rs.next()){
data.add(new table(
rs.getString("Name"),
rs.getString("Username"),
rs.getString("Password"),
rs.getString("kiki")
));
table.setItems(data);
}
preparedStatement.close();
rs.close();
}
catch(Exception e){
System.err.println(e);
}
}
Код функции поиска:
@FXML
public void searchUser()
{
searchBox.textProperty().addListener((observableValue,oldValue,newValue)->{
filteredData.setPredicate((Predicate<? super table>)user->{
if (newValue==null||newValue.isEmpty()){
return true;
}
String lowerCaseFilter=newValue.toLowerCase();
if (user.getName().toLowerCase().contains(lowerCaseFilter)){
return true;
}
else if (user.getUsername().toLowerCase().contains(lowerCaseFilter)){
return true;
}
return false;
});
});
SortedList<table> sortedData=new SortedList<>(filteredData);
sortedData.comparatorProperty().bind(table.comparatorProperty());
table.setItems(sortedData);
}
приблизительное представление того, что я пытаюсь сделать: может быть, я смогу сделать что-то вроде, - если он содержит ключевые слова «бронте» ИЛИ «красивый», то переходите к следующему оператору if. - если он находится в теме «Английский», то отобразите его на столе. Но я не знаю, с чего начать и как организовать столбцы и таблицы для такого рода функций.






Поскольку О мышах и людях, похоже, не включает ключевое слово бронта, а количество строк больше, чем о мышах и людях и грозовой перевал с ключевым словом красивая, я бы сказал, что такой запрос невозможен для любой базы данных, чтобы получить этот результат, если не задействовано больше информации, чем мы можем видеть в таблице...