Code Monkey home page Code Monkey logo

sieveable's Introduction

Sieveable

The deep search engine for Android apps. Powered by Node.js

Build Status Coverage Status Dependency Status devDependency Status MIT license

Try it now at sieveable.io

Installation

Option 1: Using Docker

  • Download the Dockerfile and run the following two docker commands:
curl -O https://raw.githubusercontent.com/sikuli/sieveable/master/Dockerfile
docker build -t username/sieveable:latest .
docker run -p 3000:3000 -d username/sieveable:latest

Option 2: Building from source

Requirements

  • A Unix-like operating system (eg. Debian, CentOS, Mac OS X, etc.).
  • node.js version 5.x.
  • Install node.js project dependencies: npm install
  • This system requires running an Apache Solr server, version 5.x, in cloud mode (SolrCloud).

Installation

  • Clone the repo.

  • Set the NODE_ENV configuration environment variable:

    • export NODE_ENV=development This variable contains the name of the application's deployment environment and can take the value of the base name of the configuration files at the ./config directory, e.g., development.
    • To check the value of the exported NODE_ENV variable before running the app, execute echo $NODE_ENV in your shell.
    • If you want to use a different dataset, then you can change the path to the dataset directory in the configuration file at ./config depending on the config file you want to use. All dataset paths must be relative to the configuration file.
  • Start Solr (in cloud mode).

  • Create the Solr collections defined in your config file at config/.

  • Once Solr is running, run the build task:

    npm run build
  • Make sure all tests pass before starting sieveable's web server.

    npm test
  • Start sieveable's web server:

    npm run

Usage

The server should be running at: http://localhost:3000

We can now send an HTTTP GET request to query Sieveable. For example, to find apps that have the word "Google" in their title, have a RelativeLayout with a Button child, and obtain their star ratings, we can send the following HTTP GET request using curl:

curl -G "http://localhost:3000/q" --data-urlencode \
 "queryText=\
 MATCH app\
 WHERE\
 <title>Google</title>\
 <RelativeLayout>\
    <Button></Button>\
 </RelativeLayout>
 <rating>(*)</rating>\
 RETURN app, l\$1 AS starRating"

which returns the following response:

{
"apps": [
  {
    "id": "com.android.chrome-1650059",
    "packageName": "com.android.chrome",
    "versionCode": 1650059,
    "versionName": "31.0.1650.59",
    "listing": {
      "starRating": 4.178911
    },
    "ui": {},
    "manifest": {}
  },
  {
    "id": "com.google.android.music-1317",
    "packageName": "com.google.android.music",
    "versionCode": 1317,
    "versionName": "5.3.1317M.940995",
    "listing": {
      "starRating": 3.8888636
    },
    "ui": {},
    "manifest": {}
  }
]
}

Documentation

For a getting started guide, sieveable search query syntax, and examples, see the Wiki.

Additional Tools

Known Issues

  • If the code indexing task (gulp index:code) fails with an out of memory error, try to increase solr's heap size. You can do that by restarting Solr with: solr -restart -c -m 1g

Caution

  • Contains JavaScript. ๐Ÿ˜ฒ
  • Made in a facility that also processes Java and Python. ๐Ÿ˜ƒ

License

sieveable's People

Contributors

kalharbi avatar doubleshow avatar

Stargazers

Mirko Mangano avatar  avatar GAURAV avatar Anmol Arora avatar Kurukshetran avatar  avatar Don avatar

Watchers

 avatar  avatar James Cloos avatar Michael Warren Skirpan avatar  avatar  avatar  avatar

sieveable's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.