1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mirrors-riot-search

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README_zh.md 6 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 29.11.2024 19:58 095cc6c

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

Особенности:

  • высокая скорость индексации и поиска (1M твитов, 500M данных, 28 секунд на индексацию, 1,65 миллисекунды на отклик поиска, 19K запросов в секунду);
  • поддержка китайского языка (используется пакет gse для параллельной сегментации, скорость 27 МБ/с);
  • логический поиск;
  • поиск по китайскому пиньинь (используется пакет gpy для преобразования китайского текста в пиньинь);
  • вычисление близости токенов (token proximity);
  • расчёт релевантности BM25;
  • настраиваемые критерии оценки и правила;
  • онлайн-добавление и удаление индексов;
  • различные варианты постоянного хранения;
  • поддержка heartbeat;
  • распределённая индексация и поиск;
  • лицензия Apache License v2, дружественная к коммерческим приложениям.

Riot v0.10.0 был выпущен в ноябре 2017 года. Полную информацию смотрите в журнале изменений.

Установка / обновление

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

Требования

Требуется версия Go не ниже 1.8.

Зависимости

Riot использует go module или dep для управления зависимостями.

Build-tools

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

re riot

Создание проекта riot:

$ re riot my-riotapp

re run

Запуск созданного проекта riot. Вы можете перейти в папку приложения и выполнить:

$ cd my-riotapp && re run

Использование

Сначала рассмотрим пример (из simplest_example.go):

package main

import (
    "log"

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

var (
    // searcher 是协程安全的
    searcher = riot.Engine{}
)

func main() {
    // 初始化
    searcher.Init(types.EngineOpts{
        Using:             3,
        GseDict: "zh",
        // GseDict: "your gopath"+"/src/github.com/go-ego/riot/data/dict/dictionary.txt",
    })
    defer searcher.Close()

    text := "《复仇者联盟3:无限战争》是全片使用IMAX摄影机拍摄"
    text1 := "在IMAX影院放映时"
    text2 := "全片以上下扩展至IMAX 1.9:1的宽高比来呈现"
    
    // 将文档加入索引,docId 从1开始
    searcher.Index("1", types.DocData{Content: text})
    searcher.Index("2", types.DocData{Content: text1}, false)
    searcher.Index("3", types.DocData{Content: text2}, true)

    // 等待索引刷新完毕
    searcher.Flush()
    // engine.FlushIndex()

    // 搜索输出格式见 types.SearchResp 结构体
    log.Print(searcher.Search(types.SearchReq{Text:"复仇者"}))
}

Это очень просто!

Затем посмотрите вводный курс, который научит вас создавать веб-сайт для поиска в Twitter менее чем за 200 строк кода Go.

Использование встроенного движка:

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`}
}
``` ```
удивительно, почему
    , интересно, где они находятся`}
data1: = types.DocData{Content: "поэтому, привет, до свидания"}
data2: = types.DocData{Content: "нет причины"}

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

req: = types.SearchReq{Text: "привет"}
search: = searcher.Search(req)
log.Println("поиск...", поиск)
}

Посмотреть больше примеров

Постоянное хранение данных (пример)

Логический поиск (пример)

Поиск по пиньинь (пример)

Примеры с разными словарями и языками

benchmark

Шаблоны поиска Riot, клиент и словари

Основные улучшения:

  • Добавлен логический поиск
  • Добавлен поиск по пиньинь
  • Добавлена распределённость
  • Улучшено разбиение на слова и другие улучшения
  • Добавлено больше API
  • Поддерживается heartbeat
  • Исправлены ошибки
  • Удалена зависимость от хранилища, использующего CGO, добавлены механизмы постоянного хранения Badger и LevelDB

Авторы

Лицензия

Riot в основном распространяется на условиях Apache License (версия 2.0), основанной на wukong.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/mirrors-riot-search.git
git@api.gitlife.ru:oschina-mirror/mirrors-riot-search.git
oschina-mirror
mirrors-riot-search
mirrors-riot-search
master