Piszę coś, co zajmuje blok tekstu i dzieli go na możliwe zapytania bazy danych, które mogą być użyte do znalezienia podobnych bloków tekstu. (Coś podobnego do listy „podobne pytania” jest generowany podczas gdy to piszę) Podstawowy proces:Utwórz tablicę unikatowych kombinacji z tablicy łańcuchów
- Usuń przystanek słowa z tekstu
- usunąć znaki specjalne
- Z pozostałego tekstu utworzyć tablicę wyjątkowy " łodygi”
- Załóż wachlarz możliwych kombinacji tablicy łodyg (gdzie utknąłem ... niby)
Oto co mam do tej pory:
//baseList starts with an empty array
//candList starts with the array of unique stems
//target is where the arrays of unique combinations are stored
function createUniqueCombos(baseList,candList,target){
for(var i=0;i<candList.length;i++){
//copy the base List
var newList = baseList.slice(0);
//add the candidate list item to the base list copy
newList.push(candList[i]);
//add the new array to the target array
target.push(newList);
//re-call function using new array as baseList
//and remaining candidates as candList
var nextCandList = candList.slice(i + 1);
createUniqueCombos(newList,nextCandList,target);
}
}
To działa, ale na blokach tekstu większych niż 25 słów powoduje awarię przeglądarki. Rozumiem, że matematycznie może istnieć ogromna liczba możliwych kombinacji. Co chciałbym wiedzieć to:
- Czy jest to skuteczniejszy sposób?
- Jak zdefiniować długość tablicy kombinacji min/maks?
To jest fantastyczne pierwsze pytanie. Witamy w StackOverflow! Twoja przeglądarka najprawdopodobniej ulegnie awarii z powodu ilości wykorzystanej pamięci lub powtarzania zbyt wiele. – Bojangles
Czy naprawdę potrzebujesz wszystkich kombinacji naraz? Czy nie możesz ich przetworzyć natychmiastowo, gdy je generujesz, zamiast gromadzić ogromną tablicę? Spróbuj również przepisać swój algorytm na iterację zamiast rekursji. –
Dzięki, jestem widzem od jakiegoś czasu;) @ OlegV.Volkov Nie, nie potrzebuję wszystkich kombinacji Chciałbym móc zdefiniować min/max długość dla zwróconych tablic kombinacji. Dzięki za sugestię dotyczącą iteracji. – HartyeTech