/* * Copyright (C) 2020, KylinSoft Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * * Authors: zhangpengfei * */ #ifndef DOCUMENT_H #define DOCUMENT_H #include #include #include #include namespace UkuiSearch { class Document { public: Document() = default; ~Document() {} Document(const Document& other) { m_document = other.m_document; m_index_text = other.m_index_text; m_unique_term = other.m_unique_term; m_shouldDelete = other.m_shouldDelete; } void operator=(const Document& other) { m_document = other.m_document; m_index_text = other.m_index_text; m_unique_term = other.m_unique_term; m_shouldDelete = other.m_shouldDelete; } void setData(QString &data); void addPosting(std::string term, QVector offset, int weight = 1); void addPosting(std::string &term, std::vector &offset, int weight = 1); void addPosting(std::string term, unsigned int offset, int weight = 1); void addTerm(QString term); void addTerm(std::string term); void addValue(unsigned slot, QString value); void addSortableSerialiseValue(unsigned slot, QString value); void setUniqueTerm(QString term); void setUniqueTerm(std::string term); std::string getUniqueTerm(); void setIndexText(QStringList indexText); QStringList getIndexText(); Xapian::Document getXapianDocument(); void reuireDeleted(); bool isRequiredDeleted(); private: Xapian::Document m_document; QStringList m_index_text; //QString m_unique_term; std::string m_unique_term; bool m_shouldDelete = false; }; } #endif // DOCUMENT_H