Elian  Harber

Elian Harber

1659819480

Riot: Go Open Source, Distributed, Simple and Efficient Search Engine

Riot search

Go Open Source, Distributed, Simple and efficient full text search engine.

简体中文

Features

Efficient indexing and search (1M blog 500M data 28 seconds index finished, 1.65 ms search response time, 19K search QPS)

Support for logical search

Support Chinese word segmentation (use gse word segmentation package concurrent word, speed 27MB / s)

Support the calculation of the keyword in the text close to the distance(token proximity)

Support calculation BM25 correlation

Support custom scoring field and scoring rules

Support add online, delete index

Support heartbeat

Support multiple persistent storage

Support distributed index and search

Can be achieved distributed index and search

Look at Word segmentation rules

Requirements

Go version >= 1.8

Dependencies

Riot uses go module or dep to manage dependencies.

Installation/Update

go get -u github.com/go-ego/riot

Build-tools

go get -u github.com/go-ego/re 

re riot

To create a new riot application

$ re riot my-riotapp

re run

To run the application we just created, you can navigate to the application folder and execute:

$ cd my-riotapp && re run

Usage:

Look at an example

package main

import (
    "log"

    "github.com/go-ego/riot"
    "github.com/go-ego/riot/types"
)

var (
    // searcher is coroutine safe
    searcher = riot.Engine{}
)

func main() {
    // Init
    searcher.Init(types.EngineOpts{
        // Using:             4,
        NotUseGse: true,
        })
    defer searcher.Close()

    text := "Google Is Experimenting With Virtual Reality Advertising"
    text1 := `Google accidentally pushed Bluetooth update for Home
    speaker early`
    text2 := `Google is testing another Search results layout with 
    rounded cards, new colors, and the 4 mysterious colored dots again`
    
    // Add the document to the index, docId starts at 1
    searcher.Index("1", types.DocData{Content: text})
    searcher.Index("2", types.DocData{Content: text1}, false)
    searcher.IndexDoc("3", types.DocData{Content: text2}, true)

    // Wait for the index to refresh
    searcher.Flush()
    // engine.FlushIndex()

    // The search output format is found in the types.SearchResp structure
    log.Print(searcher.Search(types.SearchReq{Text:"google testing"}))
}

It is very simple!

Use default engine:

package main

import (
    "log"

    "github.com/go-ego/riot"
    "github.com/go-ego/riot/types"
)

var (
    searcher = riot.New("zh")
)

func main() {
    data := types.DocData{Content: `I wonder how, I wonder why
        , I wonder where they are`}
    data1 := types.DocData{Content: "所以, 你好, 再见"}
    data2 := types.DocData{Content: "没有理由"}

    searcher.Index("1", data)
    searcher.Index("2", data1)
    searcher.Index("3", data2)
    searcher.Flush()

    req := types.SearchReq{Text: "你好"}
    search := searcher.Search(req)
    log.Println("search...", search)
}

Look at more Examples

Look at Store example

Look at Logic search example

Look at Pinyin search example

Look at different dict and language search example

Look at benchmark example

Riot search engine templates, client and dictionaries

Author: Go-ego
Source Code: https://github.com/go-ego/riot 
License: Apache-2.0 license

#go #golang #search 

What is GEEK

Buddha Community

Riot: Go Open Source, Distributed, Simple and Efficient Search Engine

Riot: Go Open Source, Distributed, Simple and Efficient Search Engine

Riot search    

Go Open Source, Distributed, Simple and efficient full text search engine.

简体中文

Features

Efficient indexing and search (1M blog 500M data 28 seconds index finished, 1.65 ms search response time, 19K search QPS)

Support for logical search

Support Chinese word segmentation (use gse word segmentation package concurrent word, speed 27MB / s)

Support the calculation of the keyword in the text close to the distance(token proximity)

Support calculation BM25 correlation

Support custom scoring field and scoring rules

Support add online, delete index

Support heartbeat

Support multiple persistent storage

Support distributed index and search

Can be achieved distributed index and search

Look at Word segmentation rules

Requirements

Go version >= 1.8

Dependencies

Riot uses go module or dep to manage dependencies.

Installation/Update

go get -u github.com/go-ego/riot

Build-tools

go get -u github.com/go-ego/re 

re riot

To create a new riot application

$ re riot my-riotapp

re run

To run the application we just created, you can navigate to the application folder and execute:

$ cd my-riotapp && re run

Usage:

Look at an example

package main

import (
    "log"

    "github.com/go-ego/riot"
    "github.com/go-ego/riot/types"
)

var (
    // searcher is coroutine safe
    searcher = riot.Engine{}
)

func main() {
    // Init
    searcher.Init(types.EngineOpts{
        // Using:             4,
        NotUseGse: true,
        })
    defer searcher.Close()

    text := "Google Is Experimenting With Virtual Reality Advertising"
    text1 := `Google accidentally pushed Bluetooth update for Home
    speaker early`
    text2 := `Google is testing another Search results layout with 
    rounded cards, new colors, and the 4 mysterious colored dots again`
    
    // Add the document to the index, docId starts at 1
    searcher.Index("1", types.DocData{Content: text})
    searcher.Index("2", types.DocData{Content: text1}, false)
    searcher.IndexDoc("3", types.DocData{Content: text2}, true)

    // Wait for the index to refresh
    searcher.Flush()
    // engine.FlushIndex()

    // The search output format is found in the types.SearchResp structure
    log.Print(searcher.Search(types.SearchReq{Text:"google testing"}))
}

It is very simple!

Use default engine:

package main

import (
    "log"

    "github.com/go-ego/riot"
    "github.com/go-ego/riot/types"
)

var (
    searcher = riot.New("zh")
)

func main() {
    data := types.DocData{Content: `I wonder how, I wonder why
        , I wonder where they are`}
    data1 := types.DocData{Content: "所以, 你好, 再见"}
    data2 := types.DocData{Content: "没有理由"}

    searcher.Index("1", data)
    searcher.Index("2", data1)
    searcher.Index("3", data2)
    searcher.Flush()

    req := types.SearchReq{Text: "你好"}
    search := searcher.Search(req)
    log.Println("search...", search)
}

Look at more Examples

Look at Store example

Look at Logic search example

Look at Pinyin search example

Look at different dict and language search example

Look at benchmark example

Riot search engine templates, client and dictionaries

Author: Go-ego
Source Code: https://github.com/go-ego/riot 
License: Apache-2.0 License

#go #golang #search 

Elian  Harber

Elian Harber

1659819480

Riot: Go Open Source, Distributed, Simple and Efficient Search Engine

Riot search

Go Open Source, Distributed, Simple and efficient full text search engine.

简体中文

Features

Efficient indexing and search (1M blog 500M data 28 seconds index finished, 1.65 ms search response time, 19K search QPS)

Support for logical search

Support Chinese word segmentation (use gse word segmentation package concurrent word, speed 27MB / s)

Support the calculation of the keyword in the text close to the distance(token proximity)

Support calculation BM25 correlation

Support custom scoring field and scoring rules

Support add online, delete index

Support heartbeat

Support multiple persistent storage

Support distributed index and search

Can be achieved distributed index and search

Look at Word segmentation rules

Requirements

Go version >= 1.8

Dependencies

Riot uses go module or dep to manage dependencies.

Installation/Update

go get -u github.com/go-ego/riot

Build-tools

go get -u github.com/go-ego/re 

re riot

To create a new riot application

$ re riot my-riotapp

re run

To run the application we just created, you can navigate to the application folder and execute:

$ cd my-riotapp && re run

Usage:

Look at an example

package main

import (
    "log"

    "github.com/go-ego/riot"
    "github.com/go-ego/riot/types"
)

var (
    // searcher is coroutine safe
    searcher = riot.Engine{}
)

func main() {
    // Init
    searcher.Init(types.EngineOpts{
        // Using:             4,
        NotUseGse: true,
        })
    defer searcher.Close()

    text := "Google Is Experimenting With Virtual Reality Advertising"
    text1 := `Google accidentally pushed Bluetooth update for Home
    speaker early`
    text2 := `Google is testing another Search results layout with 
    rounded cards, new colors, and the 4 mysterious colored dots again`
    
    // Add the document to the index, docId starts at 1
    searcher.Index("1", types.DocData{Content: text})
    searcher.Index("2", types.DocData{Content: text1}, false)
    searcher.IndexDoc("3", types.DocData{Content: text2}, true)

    // Wait for the index to refresh
    searcher.Flush()
    // engine.FlushIndex()

    // The search output format is found in the types.SearchResp structure
    log.Print(searcher.Search(types.SearchReq{Text:"google testing"}))
}

It is very simple!

Use default engine:

package main

import (
    "log"

    "github.com/go-ego/riot"
    "github.com/go-ego/riot/types"
)

var (
    searcher = riot.New("zh")
)

func main() {
    data := types.DocData{Content: `I wonder how, I wonder why
        , I wonder where they are`}
    data1 := types.DocData{Content: "所以, 你好, 再见"}
    data2 := types.DocData{Content: "没有理由"}

    searcher.Index("1", data)
    searcher.Index("2", data1)
    searcher.Index("3", data2)
    searcher.Flush()

    req := types.SearchReq{Text: "你好"}
    search := searcher.Search(req)
    log.Println("search...", search)
}

Look at more Examples

Look at Store example

Look at Logic search example

Look at Pinyin search example

Look at different dict and language search example

Look at benchmark example

Riot search engine templates, client and dictionaries

Author: Go-ego
Source Code: https://github.com/go-ego/riot 
License: Apache-2.0 license

#go #golang #search 

Tyrique  Littel

Tyrique Littel

1598461200

An Open-Source Book About the Open Source World

Open source today is a word that often include a lot of things, such as open knowledge (Wikimedia projects), open hardware (Arduino, Raspberry Pi), open formats (ODT/ODS/ODP) and so on.

It is a world of opportunities that can be difficult for newcomers but also for intermediates. This article will help you discover how to approach specific roles, activities or projects/communities in the best way.

Everything Started with “Coaching for OpenSource Communities 2.0”

I decided to write a book in my personal style about my experience in the last 7 to 8 years in open source. I was surprised when I reached 100 pages about various different topics.

My idea was to write something that I would like to read, so nothing that is boring or complicated, but full of real facts.

The second goal was to include my experience but also my philosophy on contributing and how I contribute daily.

Thirdly, I wanted to give a lot of hints and resources and an overall view of this open source world.

Basically, I wanted to write something different from self-help or coaching books that includes just a list of suggestions and best practices. Instead, I take real examples from real life about the OSS world.

As a contributor and developer, I prefer to have real cases to study, because best practices are useful, but we need to learn from others and this world is full of good and bad cases to discover.

In 2019, I started writing a book after Fosdem 2019 and after 2 years inside the Mozilla Reps Council. In that Fosdem edition, I had a talk “Coaching for Open Source Communities 2.0” and after the feedback at the conference and my thoughts in various roles, activities, and projects, it was time to write something.

At the end it wasn’t a manual but a book that included my experience, learnings, best practices and so on in Localization, Development, Project Maintainer, Sysadmin, Community Management, Mentor, Speaker and so on. It contains the following sections:

  • Biography - This choice isn’t for self promotion but just to understand my point of view and my story that can be inspiring for others
  • Philosophy - Not the usual description of Open Source or the 4 freedoms, but just what Open Source means and how you can help
  • How to live inside the Open Source - A discovery about communications and tools, understanding the various kind of people and the best way to talk with your community
  • How to choose a project - Starting with some questions to yourself and how to involve more people in your project
  • The activity - Open Source is based on tasks that can be divided in 2 levels: Support, Testing, Marketing, Development etc
  • How to use your time - We are busy, we have a life, a job and a family but Open Source can be time-consuming
  • Why document is important - How writing documentation can be healthy for your community and the project’s future and brand

There are also three appendices that are manuals which I wrote throughout the years and gathered and improved for this book. They are about: community management, public speaking, and mentoring.

The book ends with my point of view about the future and what we have to do to change opinions about those topics.

I wrote this book and published in October 2019, but it was only possible with the help of reviews and localizers that improved and contributed. Yes, because this book is open source and free for everyone.

I picked the GPL license because this license changed the world and my life in the best way. Using this license is just a tribute. This decision usually is not clear because after all this is a book and there are better licenses like Creative Commons.

#open-source #contributing-to-open-source #programming #software-development #development #coding #books #open-source-software

Ray  Patel

Ray Patel

1623348300

Top 8 Java Open Source Projects You Should Get Your Hands-on [2021]

Learning about Java is no easy feat. It’s a prevalent and in-demand programming language with applications in numerous sectors. We all know that if you want to learn a new skill, the best way to do so is through using it. That’s why we recommend working on projects.

So if you’re a Java student, then you’ve come to the right place as this article will help you learn about the most popular Java open source projects. This way, you’d have a firm grasp of industry trends and the programming language’s applications.

However, before we discuss its various projects, it’s crucial to examine the place where you can get those projects – GitHub. Let’s begin.

#full stack development #java open source projects #java projects #open source projects #top 8 java open source projects #java open source projects

Houston  Sipes

Houston Sipes

1600992000

Did Google Open Sourcing Kubernetes Backfired?

Over the last few years, Kubernetes have become the de-facto standard for container orchestration and has also won the race against Docker for being the most loved platforms among developers. Released in 2014, Kubernetes has come a long way with currently being used across the entire cloudscape platforms. In fact, recent reports state that out of 109 tools to manage containers, 89% of them are leveraging Kubernetes versions.

Although inspired by Borg, Kubernetes, is an open-source project by Google, and has been donated to a vendor-neutral firm — The Cloud Native Computing Foundation. This could be attributed to Google’s vision of creating a platform that can be used by every firm of the world, including the large tech companies and can host multiple cloud platforms and data centres. The entire reason for handing over the control to CNCF is to develop the platform in the best interest of its users without vendor lock-in.

#opinions #google open source #google open source tools #google opening kubernetes #kubernetes #kubernetes platform #kubernetes tools #open source kubernetes backfired