collector.h 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. /*
  2. * Tencent is pleased to support the open source community by making wwsearch
  3. * available.
  4. *
  5. * Copyright (C) 2018-present Tencent. All Rights Reserved.
  6. *
  7. * Licensed under the Apache License, Version 2.0 (the "License"); you may not
  8. * use this file except in compliance with the License. You may obtain a copy of
  9. * the License at
  10. *
  11. * https://opensource.org/licenses/Apache-2.0
  12. *
  13. * Unless required by applicable law or agreed to in writing, software
  14. * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
  15. * WARRANTIES OF ANY KIND, either express or implied. See the License for the
  16. * specific language governing permissions and limitations under the License.
  17. */
  18. #pragma once
  19. #include "scorer.h"
  20. #include "storage_type.h"
  21. namespace wwsearch {
  22. /* Notice : Core class for collect & filter & sort the suitable doc list.
  23. */
  24. class Collector {
  25. private:
  26. Scorer *scorer_;
  27. protected:
  28. SearchStatus status_;
  29. public:
  30. Collector() : scorer_(nullptr) {}
  31. virtual ~Collector() {}
  32. inline void SetScorer(Scorer *scorer) { this->scorer_ = scorer; }
  33. inline Scorer *GetScorer() { return this->scorer_; }
  34. virtual void Collect(DocumentID doc, int field_id) = 0;
  35. virtual bool Enough() = 0;
  36. virtual void Finish() = 0;
  37. // Do not call this method more than once.
  38. virtual void GetAndClearMatchDocs(std::list<DocumentID> &docs) = 0;
  39. inline SearchStatus &Status() { return this->status_; }
  40. private:
  41. };
  42. } // namespace wwsearch