Skip to content

The deep search engine for Android Apps

License

MIT, CC-BY-4.0 licenses found

Licenses found

MIT
LICENSE.txt
CC-BY-4.0
LICENSE-docs
Notifications You must be signed in to change notification settings

sikuli/sieveable

Repository files navigation

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

About

The deep search engine for Android Apps

Resources

License

MIT, CC-BY-4.0 licenses found

Licenses found

MIT
LICENSE.txt
CC-BY-4.0
LICENSE-docs

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published