-
字典插件
此类插件继承DictInterface接口
- 哈希词典:HashAdapter<TYPE1, TYPE2>
- 干预词典:String2RetrievalItemAdapter
- 切词词典: WordsegAdapter
- Paddle匹配模型词典: PaddleSimAdapter
- Tensorflow模型词典: TFModelAdapter
-
Analysis插件
此类插件继承AnalysisMethodInterface接口
- 切词:AnalysisWordseg
- query语义向量表示:AnalysisSimNetEmb
- query替换: AnalysisQueryIntervene
-
Retrieval插件
此类插件继承RetrievalPluginInterface接口
- Term检索:TermRetrievalPlugin
- 语义检索:SemanticRetrievalPlugin
- 人工干预:ManualRetrievalPlugin
-
Solr查询插件
此类插件继承SolrQInterface接口
- EqualSolrQBuilder:字段等于
- BoostSolrQBuilder:字段term加权
- ContainSolrQBuilder:字段包含关键词
- SynonymSolrQBuilder:字段term同义词
- DateCompareSolrQBuilder:日期字段比较
-
Matching插件
此类插件继承MatchingInterface接口
- 编辑距离相似度:EditDistanceSimilarity
- Cosine相似度:CosineSimilarity
- Jaccard相似度: JaccardSimilarity
- BM25相似度: BM25Similarity
- Paddle匹配模型相似度: PaddleSimilarity
- Tensorflow匹配模型相似度:TFSimilarity
- 对候选切词:WordsegProcessor
-
Rank插件
此类插件继承RankPredictInterface接口
- 线性预测模型: PredictLinearModel
- XGBoost预测模型: PredictXGBoostModel
- 特征选择预测模型:PredictSelectModel
-
请求处理插件
- 请求解包插件(继承ReqPreprocInterface接口):AnyqPreprocessor
- 请求包装插件(继承ReqPostprocInterface接口):AnyqPostprocessor
以BM25Similarity插件为实例,说明如何添加用户自定义插件。
-
BM25Similarity是Matching插件,需继承MatchingInterface接口,并重写相关的虚函数.
include/matching/lexical/bm25_sim.h
... class BM25Similarity : public MatchingInterface { public: BM25Similarity(); virtual ~BM25Similarity() override; virtual int init(DualDictWrapper* dict, const MatchingConfig& matching_config) override; virtual int destroy() override; virtual int compute_similarity(const AnalysisResult& analysis_res, RankResult& candidates) override; ... };
-
注册BM25Similarity插件.
include/common/plugin_header.h
... #include "matching/lexical/bm25_sim.h" ... REGISTER_PLUGIN(BM25Similarity); ...
-
实现构造、析构、init、destroy、compute_similarity等函数。
src/matching/lexical/bm25_sim.cpp
... BM25Similarity::BM25Similarity(){ ... } ... BM25Similarity::~BM25Similarity(){ ... } ... int BM25Similarity::init(DualDictWrapper* dict, const MatchingConfig& matching_config) { ... } ... int BM25Similarity::destroy() { ... } ...
mkdir build && cd build && cmake .. && make