lgcre 0.0.3 copy "lgcre: ^0.0.3" to clipboard
lgcre: ^0.0.3 copied to clipboard

outdated

Local Graph Context-based Recommende Engine. This is a library to build peronalized POI (point of intereset) recommender engines on the device. Specifiy a graph of related tags or categories, and whic [...]

example/lib/main.dart

import 'package:flutter/material.dart';
import 'dart:async';
import 'dart:collection';
import 'dart:convert';

import 'package:flutter/services.dart';
import 'package:lgcre/lgcre.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  String _status = 'Unknown';

  @override
  void initState() {
    super.initState();
    initSparksee();
  }


  Future<void> initSparksee() async {
    String status;
    // Platform messages may fail, so we use a try/catch PlatformException.
    try {
      status="WAITING";

      // LGCRE: INITIALIZATION 
      Map<String,String> options = {
                                       'lgcre.licenseid' : '<license-id>',
                                       'lgcre.clientid' : '<license-id>',
                                        'lgcre.loglevel' : 'fine',
                                        'lgcre.maxmem' : '64'
                                       };

      await Lgcre.init(options);

      // LGCRE: RESETTING THE DATA
      await Lgcre.reset();

      // ADDING DATA
      // Each data key (pois, categories, link_categories,
      // etc...) can be null if no data needs to be added from that type. In
      // this example we add data for all types just as an example

      Map<String,dynamic> data = new Map<String, dynamic>();
      // Add pois to the recommender. For instance, when we know the person has
      // visited one poi and we want to represent this by means of a link
      // between the person and the poi (see below)
      data['pois'] = ["poi1", "poi2", "poi3", "poi4"];

      // Add categories to the recommender. For instance, because we know the
      // person is interested in a particular category or because we know that a poi
      // the user has visited, has a category (see below)
      data['categories'] = ["cat1", "cat2", "cat3", "cat4"];

      // Add links between categories to the recommender. For instance, when 
      // we know that two categories are related. Both categories must have been
      // previously added before through the categories field, either in this
      // call or in a previous call to 'addData' (see above).
      data['links_categories'] =  [ 
                                   {'category1' : 'cat1', 
                                   'category2' : 'cat2'}, 

                                   {'category1' : 'cat1', 
                                   'category2' : 'cat3'},

                                   {'category1' : 'cat2', 
                                   'category2' : 'cat4'},
                                  ];

      // Add links between pois and categories to the recommender. When we know
      // that a poi is related in some way to a category. Both pois and
      // categories in the links must have been added previously through 'pois'
      // and 'categories' field, either on this call or in a previous call to
      // 'addData' (see above).
      data['links_poi_category'] = [ 
                                      {'poi' : 'poi1', 
                                       'category' : 'cat1'}, 
                                      {'poi' : 'poi2', 
                                       'category' : 'cat2'}, 
                                      {'poi' : 'poi3', 
                                       'category' : 'cat3'}, 
                                      ];

      // Add data to the person. 'pois' are pois related to the user, for
      // instance, because we know he has liked or visited it. The pois in the
      // list must have already been added through the "pois" field, either in
      // this call or a previous call to 'addData' (see above), and similar for
      // categories. 
      data['person'] = {
                          'pois' : ['poi1', 'poi2'],
                          'categories' : ['cat1', 'cat2'],
                       };

      await Lgcre.addData(data);


      // LGCRE: RUNNING A QUERY

      // To execute a query, build a map between pois and lists of categories as
      // follows
      Map<String,dynamic> query = new Map<String,dynamic>();
      query['pois'] = [
                { 'poi' : 'poi1', 
                  'categories' : ['cat1, cat2']},
                { 'poi' : 'poi2', 
                  'categories' : ['cat1, cat3']},
                { 'poi' : 'poi3', 
                  'categories' : ['cat2, cat4']},
                { 'poi' : 'poi4', 
                  'categories' : ['cat3, cat4']},
      ];

      // The method run
      List<ResultEntry>? result = await Lgcre.run(query);
      if(result != null)
      {
        StringBuffer strbuilder = new StringBuffer();
        strbuilder.write('WORKS:\n');
        
        for (ResultEntry entry in result)
        {
          strbuilder.write(entry.poi+" "+entry.score.toString()+"\n");
        }
        status = strbuilder.toString();
      }
      else
      {
        status = "RUN QUERY RETUNED NULL";
      }

      // We remove all the data, to test the removeData method
      await Lgcre.removeData(data);

      // LGCRE: Releasing resources
      await Lgcre.release();

    } on LgcreException catch (e) {
      status = '${e}';
    } catch(e)
    {
	status = 'Unknown exception thrown';
    }
    

    // If the widget was removed from the tree while the asynchronous platform
    // message was in flight, and we want to discard the reply rather than calling
    // setState to update our non-existent appearance.
    if (!mounted) return;

    setState(() {
      _status = status;
    });
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
                       home: Scaffold(
                                      appBar: AppBar(
                                                    title: const Text('Plugin example app'),
                                     ),
                                      body: Center( 
                                                   child: Text(_status)),
                                     ),

    );
  }
}
1
likes
0
pub points
0%
popularity

Publisher

unverified uploader

Local Graph Context-based Recommende Engine. This is a library to build peronalized POI (point of intereset) recommender engines on the device. Specifiy a graph of related tags or categories, and which categories are interested by the user. Then run a query consisting of pairs POI-<list of categories> and the engine will return the POIs sorted by relevance to the user. The use of this plugin requires a valid Sparksee graph database license (www.sparsity-technologies.com)

Homepage

License

unknown (LICENSE)

Dependencies

flutter

More

Packages that depend on lgcre