comparison OrthancServer/ServerContext.cpp @ 3025:039a9d262d64 db-changes

preparing to speed up find in databases
author Sebastien Jodogne <s.jodogne@gmail.com>
date Mon, 17 Dec 2018 17:05:28 +0100
parents 2cbafb5d5a62
children fd587cf51a89
comparison
equal deleted inserted replaced
3024:ef17a587e10d 3025:039a9d262d64
773 } 773 }
774 774
775 775
776 void ServerContext::Apply(ILookupVisitor& visitor, 776 void ServerContext::Apply(ILookupVisitor& visitor,
777 const ::Orthanc::LookupResource& lookup, 777 const ::Orthanc::LookupResource& lookup,
778 const DatabaseLookup& lookup2,
778 size_t since, 779 size_t since,
779 size_t limit) 780 size_t limit)
780 { 781 {
781 LookupMode mode; 782 LookupMode mode;
782 783
808 809
809 810
810 std::vector<std::string> resources, instances; 811 std::vector<std::string> resources, instances;
811 GetIndex().FindCandidates(resources, instances, lookup); 812 GetIndex().FindCandidates(resources, instances, lookup);
812 813
814 #if 1
815 {
816 std::vector<std::string> resources2, instances2;
817
818 if (lookup.GetLevel() == ResourceType_Patient)
819 {
820 GetIndex().ApplyLookupPatients(resources2, instances2, lookup2, limit /* TODO */);
821 }
822 else
823 {
824 GetIndex().ApplyLookupResources(resources2, instances2, lookup2, lookup.GetLevel(), limit /* TODO */);
825 }
826
827 std::set<std::string> r;
828 for (size_t i = 0; i < resources2.size(); i++)
829 {
830 r.insert(resources[i]);
831 }
832
833 assert(r.size() == resources.size());
834
835 for (size_t i = 0; i < resources.size(); i++)
836 {
837 assert(r.find(resources[i]) != r.end());
838 }
839 }
840 #endif
841
813 LOG(INFO) << "Number of candidate resources after fast DB filtering on main DICOM tags: " << resources.size(); 842 LOG(INFO) << "Number of candidate resources after fast DB filtering on main DICOM tags: " << resources.size();
814 843
815 assert(resources.size() == instances.size()); 844 assert(resources.size() == instances.size());
816 845
817 size_t countResults = 0; 846 size_t countResults = 0;