Giter VIP home page Giter VIP logo

jivesearch's Introduction

jive-search logo


Jive Search is the open source search engine that doesn't track you. Search privately, now : https://jivesearch.com



๐Ÿ’พ Installation

The below will build and run a Docker Compose file for Elasticsearch, OpenResty (Nginx), PostgreSQL, Redis, and a NSFW/image classification server. The OpenResty build assumes you have a domain name as well as a Let's Encrypt SSL certificate. However, in order for the nginx.conf file to dynamically load your SSL certificate you will need to create a symlink to a generic "domain" folder (replace "example.com" with your domain). For local development you can skip this step.

$ ln -s /etc/letsencrypt/live/example.com /etc/letsencrypt/live/domain

Install and run

$ go get -u github.com/jivesearch/jivesearch
$ cd $GOPATH/src/github.com/jivesearch/jivesearch/docker
$ domain=example.com && onion=myonion.onion && data_directory=/path/to/data && sudo mkdir -p $data_directory/elasticsearch && sudo chown 1000:1000 $data_directory/elasticsearch && sudo DATA_DIRECTORY=$data_directory REDIS_PORT=6379 ES_HEAP=2g NGINX_DOMAIN=$domain ONION=$onion docker-compose build --no-cache && sudo DATA_DIRECTORY=$data_directory REDIS_PORT=6379 ES_HEAP=2g NGINX_DOMAIN=$domain ONION=$onion docker-compose up -d

For local development you don't need a Let's Encrypt certificate. You can simply access http://127.0.0.1:8000 directly by running cd ~/go/src/github.com/jivesearch/jivesearch/frontend && go run ./cmd/frontend.go --debug=true --provider=yandex

Elasticsearch may give you an error about max virtual memory areas. In that case:

# Add the following to the bottom of /etc/sysctl.conf (requires restart):
vm.max_map_count=262144

For systemd settings (replace "myuser" below and edit env variables as needed):

sudo curl -o /etc/systemd/system/frontend.service 
https://gist.githubusercontent.com/brentadamson/7b8117347909cc38384fed589a3d785d/raw/26b835df771b63349d656419848128cb13e8c29f/frontend
sudo curl -o /etc/systemd/system/images.service https://gist.githubusercontent.com/brentadamson/daafa09f8d06eb401e0eb72c2b992261/raw/357e66de29d56739ae41d61cbe227d36819e0df4/images
sudo curl -o /etc/systemd/system/crawler.service https://gist.githubusercontent.com/brentadamson/0880ef548130f69c2537049a550be8e8/raw/42269dfcba6d86aba49bc56ffa7e60a9eb7ebdf3/crawler

(The crawler is only necessary if you don't use a third-party search provider like Yandex.)

Wikipedia Dump File
$ cd $GOPATH/src/github.com/jivesearch/jivesearch/instant/wikipedia/cmd/dumper && go run dumper.go --workers=2 --dir=/path/to/dump/files --wikipedia=true --wikidata=true --wikiquote=true --wiktionary=true --truncate=400 --delete=true
Location Data

Location data is not logged but is used for local weather

$ sudo add-apt-repository ppa:maxmind/ppa
$ sudo apt update && sudo apt install geoipupdate
$ sudo nano /usr/local/etc/GeoIP.conf
  AccountID 0
  LicenseKey 000000000000
  EditionIDs GeoLite2-City GeoLite2-Country
$ sudo crontab -e
  56 3 * * 4 /usr/bin/geoipupdate
Timezone

A timezone database is used to get the timezone from a lat/lon for our clock instant answer

$ go get -u github.com/evanoberholster/timezoneLookup
$ go install $GOPATH/src/github.com/evanoberholster/timezoneLookup/cmd/timezone.go
$ rm -Rf ~/timezone && mkdir ~/timezone && cd ~/timezone
$ cd ~/timezone && wget https://github.com/evansiroky/timezone-boundary-builder/releases/download/2018i/timezones.geojson.zip
$ cd ~/timezone && unzip ~/timezone/timezones.geojson.zip
$ cd ~/timezone/dist && timezone -json "combined.json" -db=timezone -type=memory
$ sudo rm -Rf /usr/share/timezone
$ sudo mkdir /usr/share/timezone
$ sudo mv timezone.snap.json /usr/share/timezone
MusicBrainz

Instructions for MusicBrainz (to show the album discography instant answer) can be found here.


๐Ÿš€ Roadmap

Our goal is to create a search engine that respects your privacy AND delivers great search results, instant answers, maps, image search, news, and more.

Marked items indicate progress has been made in that category. There is much more to do in each area. Suggestions are welcome!

  • Privacy
  • !Bangs
  • Core Search Results & Distributed Crawler
    • Advanced Search (exact phrase, dogs OR cats, -cats, site/domain search, etc.)
    • Filetype search
    • Language & Region
    • Phrase Suggester (a.k.a. "Did You Mean?")
    • Proxy Links
    • SafeSearch
    • Time Search (past year/month/day/hour, etc.
    • 3rd party search providers
      • Yandex API
  • Autocomplete
  • Instant Answers
    • Birthstone, camelcase, characters, coin toss, frequency, POTUS, prime, random, reverse, stats, user agent, etc.
    • Breach (a.k.a. have i been pwned)
    • Discography/Music albums
    • Economic stats (GDP, population)
    • Flight Info & Status
    • JavaScript-based answers
      • Basic calculator
        • Mortgage, financial and other calculators
      • CSS/JavaScript/JSON/etc minifier and prettifier
      • Converters (foreign exchange, meters to feet, mb to gb, etc...)
    • Maps
    • Nutrition
    • Package Tracking (UPS, FedEx, USPS, etc...)
    • Shopping
    • Stack Overflow
    • Stock Quotes & Charts
    • Weather
    • WHOIS
    • Wikipedia summary
    • Wikidata answers (how tall is, birthday, etc.)
    • Wikiquote
    • Wiktionary
    • Many more instant answers (including from 3rd party APIs)
    • Translate trigger words and answers to other languages
  • Image Search
  • Video Search
  • News
  • Custom CSS Themes
  • Tor

๐Ÿ“™ Documentation

Jive Search's documentation is hosted on GoDoc Page here.


๐Ÿ’ฌ Contributing

Want to contribute? Great!

Search for existing and closed issues. If your problem or idea is not addressed yet, please open a new issue here.

You can also join us in our chatroom at https://discord.gg/cfxQkuh or contact us on Twitter @jivesearch.


๐Ÿ“œ Copyright and License

Code and documentation copyright 2018 the Jive Search Authors. Code and docs released under the Apache License.

jivesearch's People

Contributors

adamfaliq42 avatar rizzoid avatar

Watchers

James Cloos avatar Antonio Mallia avatar  avatar

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.