Мы используем Stream для поиска в ArrayList строк, файл словаря отсортирован и содержит 307107 слов, все в нижнем регистре
Мы используем findFirst для поиска совпадений из текста в TextArea
AsДо тех пор, пока слово будет написано с ошибкой за пределами 3 символов, поиск будет иметь благоприятные результаты
Если слово с ошибкой похоже на этот "Charriage", то результаты не близки к совпадению
Очевидная цель состоит в том, чтобы приблизиться к правильному безнеобходимость взглянуть на огромное количество слов
Вот текст, который мы тестируем
Возьмите его, как создатель, и как видимый, как Chariage NOT ME Charriag добавьте недостающий гласный в Cjarroage
Мы внесли некоторые существенные изменения в фильтры поиска потока с разумными улучшениями
Мы отредактируем опубликованный код, включив в него ТОЛЬКО ту часть кода, где поиск не удался
И ниже, что изменения кода сделанык потоковым фильтрам
Перед изменением кода, если в searchString была ошибкаlled char в позиции 1 ничего не было найдено в словаре, новые поисковые фильтры исправили, что
Мы также добавили больше информации о поиске, увеличив количество символов для endSith
Так что все еще не работает! Если в searchString (слово с ошибкой) отсутствует символ в конце слова и если слово содержит неправильный символ в позициях с 1 по 4, поиск завершится неудачно
Мы работаем над добавлением и удалением символа, но не уверены в этомявляется работоспособным решением
Комментарии или код будут очень благодарны, если вы хотите завершить проект, который мы опубликуем на GitHub. Просто спросите в комментариях
Вопрос по-прежнему заключается в том, как исправить этот поисковый фильтр, если в слове с ошибкой пропущено несколько символов?
После нескольких часов поиска БЕСПЛАТНОГО словаря TXT это один из лучших
Факт в боковой панели: 115726 слов, длина которых> 5, и гласная в конце слова. Это означает, что в конце у него 252234 слова без гласной
Означает ли это, что у нас есть 32% шанс исправить проблему, добавив гласную в конец searchString? НЕ вопрос просто странный факт!
ЗДЕСЬ - ссылка на скачивание словаря и размещение файла words_alpha.txt на диске C в C: /A_WORDS/words_alpha.txt "); words_alpha.txt
Код до изменений
}if(found != true){
lvListView.setStyle("-fx-font-size:18.0;-fx-background-color: white;-fx-font-weight:bold;");
for(int indexSC = 0; indexSC < simpleArray.length;indexSC++){
String NewSS = txtMonitor.getText().toLowerCase();
if(NewSS.contains(" ")||(NewSS.matches("[%&/0-9]"))){
String NOT = txtMonitor.getText().toLowerCase();
txtTest.setText(NOT+" Not in Dictionary");
txaML.appendText(NOT+" Not in Dictionary");
onCheckSpelling();
return;
}
int a = NewSS.length();
int Z;
if(a == 0){// manage CR test with two CR's
Z = 0;
}else if(a == 3){
Z = 3;
}else if(a > 3 && a < 5){
Z = 4;
}else if(a >= 5 && a < 8){
Z = 4;
}else{
Z = 5;
}
System.out.println("!!!! NewSS "+NewSS+" a "+a+" ZZ "+Z);
if(Z == 0){// Manage CR in TextArea
noClose = true;
strSF = "AA";
String NOT = txtMonitor.getText().toLowerCase();
//txtTo.setText("Word NOT in Dictionary");// DO NO SEARCH
//txtTest.setText("Word NOT in Dictionaary");
txtTest.setText("Just a Space");
onCheckSpelling();
}else{
txtTest.setText("");
txaML.clear();
txtTest.setText("Word NOT in Dictionaary");
txaML.appendText("Word NOT in Dictionaary");
String strS = searchString.substring(0,Z).toLowerCase();
strSF = strS;
}
// array & list use in stream to add results to ComboBox
List<String> cs = Arrays.asList(simpleArray);
ArrayList<String> list = new ArrayList<>();
cs.stream().filter(s -> s.startsWith(strSF))
//.forEach(System.out::println);
.forEach(list :: add);
for(int X = 0; X < list.size();X++){
String A = (String) list.get(X);
Улучшенный новый код
}if(found != true){
for(int indexSC = 0; indexSC < simpleArray.length;indexSC++){
String NewSS = txtMonitor.getText().toLowerCase();
if(NewSS.contains(" ")||(NewSS.matches("[%&/0-9]"))){
String NOT = txtMonitor.getText().toLowerCase();
txtTest.setText(NOT+" Not in Dictionary");
onCheckSpelling();
return;
}
int a = NewSS.length();
int Z;
if(a == 0){// manage CR test with two CR's
Z = 0;
}else if(a == 3){
Z = 3;
}else if(a > 3 && a < 5){
Z = 4;
}else if(a >= 5 && a < 8){
Z = 4;
}else{
Z = 5;
}
if(Z == 0){// Manage CR
noClose = true;
strSF = "AA";
String NOT = txtMonitor.getText().toLowerCase();
txtTest.setText("Just a Space");
onCheckSpelling();
}else{
txtTest.setText("");
txtTest.setText("Word NOT in Dictionaary");
String strS = searchString.substring(0,Z).toLowerCase();
strSF = strS;
}
ArrayList list = new ArrayList<>();
List<String> cs = Arrays.asList(simpleArray);
// array list & list used in stream foreach filter results added to ComboBox
// Code below provides variables for refined search
int W = txtMonitor.getText().length();
String nF = txtMonitor.getText().substring(0, 1).toLowerCase();
String nE = txtMonitor.getText().substring(W - 2, W);
if(W > 7){
nM = txtMonitor.getText().substring(W-5, W);
System.out.println("%%%%%%%% nE "+nE+" nF "+nF+" nM = "+nM);
}else{
nM = txtMonitor.getText().substring(W-1, W);
System.out.println("%%%%%%%% nE "+nE+" nF "+nF+" nM = "+nM);
}
cs.stream().filter(s -> s.startsWith(strSF)
|| s.startsWith(nF, 0)
&& s.length()<= W+2
&& s.endsWith(nE)
&& s.startsWith(nF)
&& s.contains(nM))
.forEach(list :: add);
for(int X = 0; X < list.size();X++){
String A = (String) list.get(X);
sort(list);
cboSelect.setStyle("-fx-font-weight:bold;-fx-font-size:18.0;");
cboSelect.getItems().add(A);
}// Add search results to cboSelect
break;
Вотснимок экрана файла FXML, элементы управления названы так же, как имена, используемые в нашем коде, за исключением ComboBox