2012-03-13 8 views
-1

우리는 MongoDB에서 오는 루비 객체를 비교하는 알고리즘을 가지고 있습니다. 대다수의 시간은 결과 (~ 1000)를 얻고, 가중치를 할당하고, 기본 오브젝트와 비교합니다. 이 프로세스는 1000 개의 객체에 대해 ~ 2 초가 걸립니다. 그 후, 우리는 가중치에 의해 객체를 정렬하고 상위 10 개를 가져갑니다.루비 객체 조작

초기 일치 항목의 수가 계속 증가 할 것이므로 Ruby에서 일치 항목을 비교하고 정렬하는 더 효율적인 방법을 찾고 있습니다.

나는 모호한 것 같지만 그 사람에 대한 데이터 배열이있는 사용자 개체라고 가정하고 사용자에게 가장 적합한 사용자를 찾기 위해 단일 사용자와 비교하고 있습니다.

+2

네 말이 맞아, 그게 완전히 불분명하다. –

+0

현재 사용중인 비교 프로세스는 무엇입니까? – kclair

+0

비교는 각 사용자에 대한 문자열을 포함하는 배열 집합 사이에 있습니다. 기본적으로 각 배열에 대해 공통 요소가 몇 개 있는지 확인하고 총 5 개의 배열 비교가 있습니다. – user577808

답변

1

무게 저장/캐싱을 고려 ​​했습니까? 이것은 가중치가 각 사용자의 속성에만 의존하고 해당 사용자의 외부 값에는 의존하지 않는 경우 잘 작동합니다.

또한 사용자와 "기본"사용자와 관련된 가중치를 포함하는 계산은 얼마나 복잡합니까? 복잡한 경우 두 개의 노드/개체 사이의 관계에 특정한 데이터를 저장할 수있는 그래프 데이터베이스를 사용하는 것이 좋습니다.

+0

좋은 지적. 각 사용자와 관련된 다양한 배열 사이의 비교 그들은 변화하지만, 톤은 아닙니다. 그래서 UserA에는 connections = [....], UserB에는 connections = [...]이 있습니다. connections 배열에는 문자열 ID가 있습니다. 그래서 2를 비교하고 공통점이 얼마나 많은지 찾아냅니다. 앞서 언급했듯이 연결은 매일 밤 업데이트되지만 많은 변경하지는 않습니다. – user577808