Tôi đang viết một thứ gì đó có khối văn bản và chia nhỏ thành các truy vấn cơ sở dữ liệu có thể được sử dụng để tìm các khối văn bản tương tự. (Một cái gì đó tương tự như "câu hỏi tương tự" danh sách được tạo ra khi tôi nhập này) Quá trình cơ bản:Tạo mảng kết hợp độc đáo từ mảng chuỗi
- từ Remove thẳng từ văn bản
- Remove ký tự đặc biệt
- Từ văn bản còn lại tạo ra một loạt các độc đáo " xuất phát"
- Tạo một mảng kết hợp có thể có của mảng của xuất phát (nơi tôi đang mắc kẹt ... loại)
Dưới đây là những gì tôi có cho đến nay:
//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);
}
}
Tác phẩm này, nhưng trên các khối văn bản lớn hơn 25 từ hoặc hơn, nó làm hỏng trình duyệt của tôi. Tôi nhận ra rằng toán học có thể có một số lượng lớn các kết hợp có thể. Điều tôi muốn biết là:
- Có cách nào hiệu quả hơn để thực hiện việc này không?
- Làm cách nào để xác định độ dài mảng kết hợp tối thiểu/tối đa?
Đây là một câu hỏi tuyệt vời đầu tiên. Chào mừng bạn đến với StackOverflow! Trình duyệt của bạn có thể sẽ bị lỗi do lượng bộ nhớ được sử dụng hoặc quá nhiều lần. – Bojangles
Bạn có thực sự cần tất cả các kết hợp cùng một lúc không? Bạn không thể xử lý chúng ngay lập tức khi bạn tạo ra chúng thay vì tích lũy mảng lớn? Cũng cố gắng viết lại thuật toán của bạn để lặp lại thay vì đệ quy. –
Cảm ơn, tôi đã là một khán giả khá lâu rồi) @ OlegV.Volkov Không, tôi không cần tất cả các kết hợp tôi muốn có thể xác định độ dài tối thiểu/phút cho các mảng kết hợp được trả về. Cảm ơn đề xuất lặp lại. – HartyeTech