- Learning Salesforce Einstein
- Mohith Shrivastava
- 232字
- 2021-07-02 21:44:04
Engine design
The starting point of the application is the Engine. This is indicated in the engine.json file of your project shown as follows:
{
"id": "default",
"description": "Default settings",
"engineFactory":
"org.template.recommendation.RecommendationEngine",
"datasource": {
"params" : {
"appName": "Recommenderapp"
}
},
"algorithms": [
----
}
The Engine class for our reference is written as follows:
public class RecommendationEngine extends EngineFactory {
@Override
public BaseEngine<EmptyParams, Query, PredictedResult,
Set<String>> apply() {
return new Engine<>(
DataSource.class,
Preparator.class,
Collections.<String, Class<? extends
BaseAlgorithm<PreparedData,
?, Query, PredictedResult>>>singletonMap("algo",
Algorithm.class),
Serving.class
);
}
}
Key points to make a note from the preceding code are as follows:
- An engine class extends from EngineFactory, which is provided by PredictionIO
- The apply() interface method of the EngineFactory base class is overridden
- The apply() method returns an instance of the engine class that has constructor parameters for the Datasource class, the Preparator class, the Singleton Map of Algorithm class, and the serving class
Let's observe the following lines of code:
Collections.<String, Class<? extends BaseAlgorithm<PreparedData,
?, Query, PredictedResult>>>singletonMap(
"algo", Algorithm.class)
The preceding lines may be hard to interpret; class <? extends BaseAlgorithm<>> means that the type of the class is undetermined, but you are guaranteed that it extends BaseAlgorithm.
If you are familiar with Scala, the Scala code for the Engine would look as follows:
object ECommerceRecommendationEngine extends IEngineFactory {
def apply() = {
new Engine(
classOf[DataSource],
classOf[Preparator],
Map("ecomm" -> classOf[ECommAlgorithm]),
classOf[Serving])
}
}
推薦閱讀
- Visual C++程序設計學習筆記
- Ext JS Data-driven Application Design
- 快人一步:系統性能提高之道
- Instant PHP Web Scraping
- Beginning C++ Game Programming
- Swift語言實戰晉級
- Solutions Architect's Handbook
- ASP.NET求職寶典
- Building Slack Bots
- Flink核心技術:源碼剖析與特性開發
- VMware vSphere Design Essentials
- C語言王者歸來
- 基于JavaScript的WebGIS開發
- Python程序設計教程
- Java EE 7 First Look