
؟ بسيطة ، موزعة ، خفيفة الوزن
تنفيذ محرك البحث المريح المكتوب في GO؟
SearchGoose هو محرك بحث مريح بسيط لدعم بيانات البحث وفهرسة. لأغراض الدراسة ، في الغالب ، فهم تفاصيل تنفيذ كيفية بناء مرونة ، مع التركيز على تجميع النظام الموزع ودعم البحث عن النص الكامل باستخدام bleve. يهدف SearchGoose إلى توفير معالجة بيانات سريعة ومرنة عن طريق حل مشاكل قاعدة البيانات العلائقية الحالية ، والتي تزعج المهام للبحث وتقسيم البيانات. لحل هذه المشكلة ، يستخدم هذا المشروع بنية بيانات تسمى فهرس مقلوب يدعم عمليات البحث السريع للنص السريع. كما أنه ينفذ خوارزمية تشبه الطوافة ونظام التصويت القائم على النصاب القائم على النصاب لاكتشاف وخدمة الانتخابات في وضع التجميع.


$ docker build . --rm --tag searchgoose:latest$ make build$ go run main.go -transport.port=8180 -http.port=8080$ go run main.go -node.name=sg-node-01 -transport.port=8180 -http.port=8080
$ go run main.go -node.name=sg-node-02 -seed_hosts=127.0.0.1:8180 -transport.port=8179 -http.port=8081
$ go run main.go -node.name=sg-node-03 -seed_hosts=127.0.0.1:8180 -transport.port=8181 -http.port=8082لتجربة أي من الاستعلامات أدناه ، يمكنك استخدام المثال أعلاه القريعي
PUT /test15
content-type: application/json
{
"settings": {
"number_of_shards": 3
},
"mappings": {
"properties": {
"field1": {
"type": "text"
}
}
}
}
PUT /test15/_doc/4
content-type: application/json
{
"field1": "test",
"field2": "test2"
}
POST /test15/_search
content-type: application/json
{
"size": 100,
"query": {
"match": {
"field1": "field test"
}
}
}
تصف الصورة أعلاه تطبيق اختبار SearchGoose باستخدام Guttenberg-Search.
تصف الصورة أعلاه واجهة مبسطة لإدارة ومراقبة مجموعات SearchGoose بواسطة Elasticsearch-HQ.