Skip to content

Latest commit

 

History

History
122 lines (100 loc) · 4.49 KB

README.md

File metadata and controls

122 lines (100 loc) · 4.49 KB

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