sto scrivendo una cosa che richiede un blocco di testo e si rompe giù in possibili query di database che potrebbero essere utilizzati per trovare i blocchi simili di testo. (Qualcosa di simile alla lista "domande simili" viene generato, mentre scrivo questo) Il processo di base:Crea serie di combinazioni uniche di array di stringhe
- parole Rimuovere stop da testo
- rimuovere i caratteri speciali
- Da testo rimanente creare un array di unico " gambi"
- creare un array di possibili combinazioni di matrice di steli (dove mi sono bloccato ... tipo di)
Ecco quello che ho finora:
//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);
}
}
Questo funziona, ma su blocchi di testo più grande di 25 parole o giù di lì, si blocca il mio browser. Mi rendo conto che matematicamente ci potrebbe essere un numero enorme di combinazioni possibili. Quello che mi piacerebbe sapere è:
- Esiste un modo più efficiente per farlo?
- Come potrei definire un min/max combinazione lunghezza dell'array?
Questa è una fantastica prima domanda. Benvenuto in StackOverflow! È probabile che il tuo browser si arresti in modo anomalo a causa della quantità di memoria utilizzata o di una ricorsione troppo elevata. – Bojangles
Hai davvero bisogno di tutte le combinazioni contemporaneamente? Non puoi elaborarli all'istante mentre li generi invece di accumulare enormi matrici? Prova anche a riscrivere l'algoritmo in iterazione anziché ricorsione. –
Grazie, sono stato uno spettatore per un po 'di tempo;) @ OlegV.Volkov No, non ho bisogno di tutte le combinazioni Mi piacerebbe essere in grado di definire una lunghezza minima/massima per gli array di combinazione restituiti. Grazie per il suggerimento di iterazione. – HartyeTech