Phoenixsearch هو محرك بحث سريع وحديث في الوقت الفعلي على أساس Redis + PHP7


composer create-project phoenixsearch/phoenixsearch yourprojectpath/ثم قرص مضغوط إلى yourprojectpath/ وتشغيله:
php phoenixsearchd.php < key > المفتاح في ملف .env الخاص بك.
PS أنت بحاجة إلى phoenixsearchd لتنفيذ المهام المعقدة على المدى الطويل: حذف فهرس كامل ، وبيانات Reindex إلى فهرس/فهرس آخر إلخ
من الممكن تحديد العملية بعنوانها:
ps aux | grep phoenixsearch فهرس مستند جديد في التخزين وزيادة docs_count في معلومات الفهرس.
طلب:
PUT http://pheonixsearch.loc/myindex/myindextype?pretty {
"title" : " Lorem ipsum is a pseudo-Latin text " ,
"text" : " Lorem ipsum is a pseudo-Latin text used in web design, typography, layout, and printing in place of English to emphasise design elements over content. It's also called placeholder (or filler) text. It's a convenient tool for mock-ups. It helps to outline the visual elements of a document or presentation, eg typography, font, or layout. Lorem ipsum is mostly a part of a Latin text by the classical author and philosopher Cicero. Its words and letters have been changed by addition or removal, so to deliberately render its content nonsensical; it's not genuine, correct, or comprehensible Latin anymore. While lorem ipsum's still resembles classical Latin, it actually has no meaning whatsoever. As Cicero's text doesn't contain the letters K, W, or Z, alien to latin, these, and others are often inserted randomly to mimic the typographic appearence of European languages, as are digraphs not to be found in the original. "
}إجابة:
{
"created" : true ,
"took" : 23 ,
"_index" : " myindex " ,
"_type" : " myindextype " ,
"_id" : 2 ,
"result" : " created " ,
"_version" : 1
} إذا حدث تحديث مع نفس المحتوى ، فسيتم العثور على هذا المستند وسيتم تحديث خاصية _version إلى i++ .
طلب:
PUT http://pheonixsearch.loc/myindex/myindextype?pretty {
"title" : " Lorem ipsum is a pseudo-Latin text " ,
"text" : " Lorem ipsum is a pseudo-Latin text used in web design, typography, layout, and printing in place of English to emphasise design elements over content. It's also called placeholder (or filler) text. It's a convenient tool for mock-ups. It helps to outline the visual elements of a document or presentation, eg typography, font, or layout. Lorem ipsum is mostly a part of a Latin text by the classical author and philosopher Cicero. Its words and letters have been changed by addition or removal, so to deliberately render its content nonsensical; it's not genuine, correct, or comprehensible Latin anymore. While lorem ipsum's still resembles classical Latin, it actually has no meaning whatsoever. As Cicero's text doesn't contain the letters K, W, or Z, alien to latin, these, and others are often inserted randomly to mimic the typographic appearence of European languages, as are digraphs not to be found in the original. "
}إجابة:
{
"created" : false ,
"took" : 1 ,
"_index" : " myindex " ,
"_type" : " myindextype " ,
"_id" : 1 ,
"result" : " updated " ,
"_version" : 2
} سواء كنت بحاجة إلى البحث بالكلمة أو العبارة ، فقط أضف query->term في جسم JSON.
طلب:
GET http://pheonixsearch.loc/myindex/myindextype?pretty {
"query" : {
"term" : { "title" : " Lorem ipsum " }
}
}إجابة:
{
"took" : 1 ,
"timed_out" : false ,
"hits" : {
"total" : 2 ,
"hits" : [
{
"_index" : " myindex " ,
"_type" : " myindextype " ,
"_id" : 1 ,
"_timestamp" : 1502997604 ,
"_source" : {
"title" : " Lorem ipsum is a pseudo-Latin text " ,
"text" : " Lorem ipsum is a pseudo-Latin text used in web design, typography, layout, and printing in place of English to emphasise design elements over content. It's also called placeholder (or filler) text. It's a convenient tool for mock-ups. It helps to outline the visual elements of a document or presentation, eg typography, font, or layout. Lorem ipsum is mostly a part of a Latin text by the classical author and philosopher Cicero. Its words and letters have been changed by addition or removal, so to deliberately render its content nonsensical; it's not genuine, correct, or comprehensible Latin anymore. While lorem ipsum's still resembles classical Latin, it actually has no meaning whatsoever. As Cicero's text doesn't contain the letters K, W, or Z, alien to latin, these, and others are often inserted randomly to mimic the typographic appearence of European languages, as are digraphs not to be found in the original. "
}
},
{
"_index" : " myindex " ,
"_type" : " myindextype " ,
"_id" : 2 ,
"_timestamp" : 1502997883 ,
"_source" : {
"title" : " Lorem ipsum is a pseudo-Latin text used in web design " ,
"text" : " Lorem ipsum is a pseudo-Latin text used in web design, typography, layout, and printing in place of English to emphasise design elements over content. It's also called placeholder (or filler) text. It's a convenient tool for mock-ups. It helps to outline the visual elements of a document or presentation, eg typography, font, or layout. Lorem ipsum is mostly a part of a Latin text by the classical author and philosopher Cicero. Its words and letters have been changed by addition or removal, so to deliberately render its content nonsensical; it's not genuine, correct, or comprehensible Latin anymore. While lorem ipsum's still resembles classical Latin, it actually has no meaning whatsoever. As Cicero's text doesn't contain the letters K, W, or Z, alien to latin, these, and others are often inserted randomly to mimic the typographic appearence of European languages, as are digraphs not to be found in the original. "
}
}
]
}
}من خلال تعويض طلب البحث (كما هو الحال في SQL) التي تقولها للمحرك - ابدأ في جمع المستندات من J ، مقابل كمية K إذا تم تعيين الحد.
طلب:
GET http://pheonixsearch.loc/myindex/myindextype?pretty {
"offset" : 10 ,
"limit" : 5 ,
"query" : {
"term" : { "text" : " quis " }
}
}إجابة:
{
"took" : 11 ,
"timed_out" : false ,
"hits" : {
"total" : 5 ,
"hits" : [
{
"_index" : " myindex " ,
"_type" : " myindextype " ,
"_id" : 695 ,
"_timestamp" : 1503231848 ,
"_source" : {
"title" : " Ms. " ,
"text" : " Et aut et dolor assumenda ea. Iste corrupti quis quis voluptas similique quos tenetur. Et nisi dolore quod quidem architecto qui. "
}
},
{
"_index" : " myindex " ,
"_type" : " myindextype " ,
"_id" : 2027 ,
"_timestamp" : 1503231889 ,
"_source" : {
"title" : " Dr. " ,
"text" : " Quae ut ad omnis est. Impedit reiciendis illo aut magnam fugit. Sed ratione illum quibusdam illum et dolores quis quia. "
}
},
{
"_index" : " myindex " ,
"_type" : " myindextype " ,
"_id" : 4506 ,
"_timestamp" : 1503232042 ,
"_source" : {
"title" : " Dr. " ,
"text" : " Necessitatibus quod est commodi accusamus. Occaecati quis nam veritatis quia. Dicta a non ex non repellendus sed ipsa. Molestiae aliquam quia dolor porro laboriosam corporis consequatur. "
}
},
{
"_index" : " myindex " ,
"_type" : " myindextype " ,
"_id" : 4568 ,
"_timestamp" : 1503232046 ,
"_source" : {
"title" : " Dr. " ,
"text" : " Magnam quis nihil aliquid nihil enim. Ad id odio tenetur aut. Nihil ea iusto aliquam ut. "
}
},
{
"_index" : " myindex " ,
"_type" : " myindextype " ,
"_id" : 7398 ,
"_timestamp" : 1503232264 ,
"_source" : {
"title" : " Mrs. " ,
"text" : " Non adipisci sunt quisquam sint ullam qui sed. Ut voluptate eum quia quia. Nihil blanditiis eos quis fuga unde reprehenderit veritatis voluptatem. Dolorum neque temporibus vel reiciendis voluptatem. "
}
}
]
}
} عندما تحتاج إلى تسليط الضوء على الكلمات والعبارات وما إلى ذلك ، يكون الأمر بسيطًا بما يكفي للقيام به عن طريق إضافة خاصية highlight على مخطط JSON.
{
"offset" : 5 ,
"limit" : 5 ,
"highlight" : {
"pre_tags" : [ " <tag1> " , " <tag2> " ],
"post_tags" : [ " </tag1> " , " </tag2> " ],
"fields" : {
"name" : {}, "text" : {}
}
},
"query" : {
"term" : { "text" : " quis enim " }
}
}{
"took" : 46 ,
"timed_out" : false ,
"hits" : {
"total" : 5 ,
"hits" : [
{
"_index" : " myindex " ,
"_type" : " myindextype " ,
"_id" : " 7483 " ,
"_timestamp" : " 1503232272 " ,
"_source" : {
"title" : " Dr. " ,
"text" : " Pariatur aut consequatur cumque dolores. Hic quis tempora quia error suscipit <tag1><tag2>quis enim</tag1></tag2> omnis. Et ut aperiam voluptatum officia rem vitae quod. Cupiditate qui et commodi est quod. "
}
},
{
"_index" : " myindex " ,
"_type" : " myindextype " ,
"_id" : " 3973 " ,
"_timestamp" : " 1503232006 " ,
"_source" : {
"title" : " Prof. " ,
"text" : " Corporis provident tempore omnis voluptatem voluptates distinctio aliquam voluptatem. Non quis <tag1><tag2>quis enim</tag1></tag2> nulla aliquid quidem eligendi. Rerum et mollitia consequuntur consequatur. "
}
},
{
"_index" : " myindex " ,
"_type" : " myindextype " ,
"_id" : " 3276 " ,
"_timestamp" : " 1503231961 " ,
"_source" : {
"title" : " Miss " ,
"text" : " Distinctio voluptatem autem exercitationem quo cumque. Labore omnis sapiente qui itaque. Sunt iusto et porro id <tag1><tag2>quis enim</tag1></tag2> corrupti. Quaerat id doloribus est adipisci et debitis voluptas. "
}
},
{
"_index" : " myindex " ,
"_type" : " myindextype " ,
"_id" : " 3827 " ,
"_timestamp" : " 1503231997 " ,
"_source" : {
"title" : " Dr. " ,
"text" : " Iure est culpa vitae blanditiis explicabo voluptatem aliquam. Nostrum ullam quo ipsum reprehenderit magni officiis dolor. Quo <tag1><tag2>quis enim</tag1></tag2> facilis quidem facilis quaerat. "
}
},
{
"_index" : " myindex " ,
"_type" : " myindextype " ,
"_id" : " 9524 " ,
"_timestamp" : " 1503232463 " ,
"_source" : {
"title" : " Miss " ,
"text" : " Nam dolorem et laboriosam <tag1><tag2>quis enim</tag1></tag2> voluptas. Rerum vel nihil delectus fugit qui. Tempore quis commodi error provident aperiam esse. Dolorum nulla ipsa molestias veritatis dolorem sed distinctio. "
}
}
]
}
}يحذف مستند واحد بمعرفه ، مما يقلل من العداد في معلومات الفهرس بمقدار 1.
DELETE http://pheonixsearch.loc/myindex/myindextype/2?prettyللوثيقة الحالية ، يعيد:
{
"found" : true ,
"took" : 6 ,
"_index" : " myindex " ,
"_type" : " myindextype " ,
"_id" : 2 ,
"result" : " deleted " ,
"_version" : 1
}لوثيقة غير موجودة:
{
"found" : false ,
"took" : 1 ,
"_index" : " myindex " ,
"_type" : " myindextype " ,
"_id" : 2 ,
"result" : " not found " ,
"_version" : 1
}يحذف بيانات فهرس كاملة من التخزين.
DELETE http://pheonixsearch.loc/myindex/myindextypeإجابة:
{
"acknowledged" : true
} رسالة "acknowledged": true تعني أن المهمة تتم معالجتها تحت Daemon phoenixsearchd .
نسخ المستندات من فهرس إلى آخر مع تعيينات فهرس المصدر بشكل افتراضي.
POST http://pheonixsearch.loc/_reindex {
"source" : {
"index" : " myindex " ,
"index_type" : " myindextype "
},
"dest" : {
"index" : " myanotherindex " ,
"index_type" : " myanothertype "
}
}إجابة:
{
"acknowledged" : true
}سيقوم هذا الطلب بإخراج معلومات عامة حول جميع المؤشرات ، التي تم تخزينها بعد.
GET http://pheonixsearch.loc/_cat/indices [
{
"store_size" : " 456.91M "
},
{
"_index" : " myanotherindex " ,
"docs_count" : 2 ,
"docs_deleted" : 0
},
{
"_index" : " myindex " ,
"docs_count" : 12687 ,
"docs_deleted" : 1
}
] store_size هو حجم التخزين لجميع المؤشرات التي حصلت عليها من redis.
GET http://pheonixsearch.loc/myindex {
"myindex" : {
"aliases" : [],
"mappings" : {
"myindextype" : {
"properties" : {
"title" : {
"type" : " text " ,
"fields" : {
"whitespace" : {
"type" : " whitespace " ,
"ignore_above" : 0
}
}
},
"text" : {
"type" : " text " ,
"fields" : {
"whitespace" : {
"type" : " whitespace " ,
"ignore_above" : 0
}
}
},
"data" : {
"type" : " text " ,
"fields" : {
"whitespace" : {
"type" : " whitespace " ,
"ignore_above" : 0
}
}
}
}
}
}
}
} "ignore_above": 0 يعني عدم وجود قيود على طول السلسلة (النص) يتم تطبيقه ، نوع whitespace هو النوع الافتراضي لمحلل الفهرس المقلوب الذي يكسر النص فقط بواسطة الرموز البيضاء.
طلب:
{
"offset" : 5 ,
"limit" : 10 ,
"highlight" : {
"pre_tags" : [ " <tag1> " , " <tag2> " ],
"post_tags" : [ " </tag1> " , " </tag2> " ],
"fields" : {
"name" : {}, "text" : {}
}
},
"query" : {
"term" : { "text" : " quis enim " }
}
}
إجابة:
{
"took" : 57 ,
"timed_out" : false ,
"hits" : {
"total" : 10 ... طلب:
{
"offset" : 5 ,
"limit" : 10 ,
"query" : {
"term" : { "text" : " quis enim " }
}
}إجابة:
{
"took" : 34 ,
"timed_out" : false ,
"hits" : {
"total" : 10 ... طلب:
{
"query" : {
"term" : { "text" : " quis enim " }
}
}إجابة:
{
"took" : 72 ,
"timed_out" : false ,
"hits" : {
"total" : 229 ... طلب:
{
"query" : {
"term" : { "text" : " quis " }
}
}إجابة:
{
"took" : 49 ,
"timed_out" : false ,
"hits" : {
"total" : 2450 ...كما ترون أن الاختيار سريع للغاية ، لا يوجد سحر - فقط redis مع CORE الأصلي.
طلب:
{
"title" : " Lorem ipsum is a pseudo-Latin text used in web design " ,
"text" : " Lorem ipsum is a pseudo-Latin text used in web design, typography, layout, and printing in place of English to emphasise design elements over content. It's also called placeholder (or filler) text. It's a convenient tool for mock-ups. It helps to outline the visual elements of a document or presentation, eg typography, font, or layout. Lorem ipsum is mostly a part of a Latin text by the classical author and philosopher Cicero. Its words and letters have been changed by addition or removal, so to deliberately render its content nonsensical; it's not genuine, correct, or comprehensible Latin anymore. While lorem ipsum's still resembles classical Latin, it actually has no meaning whatsoever. As Cicero's text doesn't contain the letters K, W, or Z, alien to latin, these, and others are often inserted randomly to mimic the typographic appearence of European languages, as are digraphs not to be found in the original. " ,
"data" : " 2017-08-21 "
}إجابة:
{
"created" : true ,
"took" : 66 ...
}طلب:
http://pheonixsearch.loc/myindex/myindextype/44972?prettyإجابة:
{
"found" : true ,
"took" : 33 ...took وقتًا تقاس بالميلي ثانية