WWSearch: введение
WWSearch — это полнотекстовый поисковый индекс, разработанный для корпоративного WeChat. Он предназначен для быстрого поиска по большому объёму данных и использует гибкую систему хранения на основе LSM-дерева. В настоящее время WWSearch охватывает все сценарии поиска в корпоративном WeChat, включая поиск по корпоративным телефонным книгам, системам одобрения, ежедневным и еженедельным отчётам, отчётам о работе, поиску корпоративных материалов и поиску по корпоративной электронной почте. Система обрабатывает более 300 миллиардов записей, имеет миллиарды ключевых слов и поддерживает ёмкость в несколько десятков терабайт, обеспечивая возможность поиска в реальном времени.
Функции:
Анализ реализации:
Интерфейсы:
Основные интерфейсы включают:
В качестве примера использования рассмотрим интерфейс AddOrUpdateDocuments.
// wwsearch/index_writer.h
bool AddOrUpdateDocuments(const TableID &table,
std::vector<DocumentUpdater *> &documents,
std::string *store_buffer = nullptr,
SearchTracer *tracer = nullptr);
// wwsearch/document.h
class DocumentUpdater {
...
Document new_document_;
...
};
class Document {
...
std::vector<IndexField *> fields_;
DocumentID document_id_;
...
};
// wwsearch/index_field.h
class IndexField {
...
FieldID field_id_;
IndexFieldFlag field_flag_;
kIndexFieldType field_type_;
uint64_t numeric_value_;
std::string string_value_;
...
}
Для пользователей важны следующие поля:
Запросы: Основной интерфейс запроса:
// wwsearch/searcher.h
SearchStatus DoQuery(const TableID &table, Query &query, size_t top,
std::vector<Filter *> *filter,
std::vector<SortCondition *> *sorter,
std::list<DocumentID> &docs,
uint32_t min_match_filter_num = 0)
Для пользователей важно следующее:
Построение:
Зависимости включают:
# wwsearch/deps/
protobuf-2.4.1
snappy-1.0.4
rocksdb-v5.16.6
tokenizer-mmseg
Репозиторий уже содержит предварительно скомпилированные библиотеки зависимостей. Вы можете перекомпилировать их в соответствии со своей средой сборки.
Требуется среда сборки, поддерживающая C++11.
mkdir build
cd build
cmake ..
make -j32
cp ../deps/tokenizer/etc/wwsearch_* .
После успешной сборки вы увидите:
Теперь вы можете наслаждаться использованием системы!
Вклад кода: Перед отправкой pull request с кодом вклада ознакомьтесь с Contributing.md. WWSearch разработан на C++11 и следует руководству по стилю Google C++. Перед отправкой кода необходимо использовать прилагаемый файл .clang-format для форматирования кода.
Обратная связь: Если у вас есть вопросы или проблемы, вы можете обратиться:
Лицензия: WWSearch лицензируется под Apache License Version 2.0. Подробные сведения о лицензии см. в LICENSE.TXT.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )