Phoenixsearch ist eine schnelle und moderne Echtzeit-Suchmaschine mit Volltext, die auf Redis + PHP7 basiert


composer create-project phoenixsearch/phoenixsearch yourprojectpath/Dann CD zu Ihrem ProjectPath/ und rennen Sie:
php phoenixsearchd.php < key > Der Schlüssel ist in Ihrer .env -Datei.
PS Sie müssen phoenixsearchd benötigen, um langlebige komplizierte Aufgaben ex.: Löschen eines gesamten Index, REINDEX -Daten in einen anderen Index/IndexType usw.
Es ist möglich, den Prozess durch seinen Titel zu identifizieren:
ps aux | grep phoenixsearch Index ein neues Dokument in den Speicher und erhöht docs_count in Indexinformationen.
Anfrage:
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. "
}Antwort:
{
"created" : true ,
"took" : 23 ,
"_index" : " myindex " ,
"_type" : " myindextype " ,
"_id" : 2 ,
"result" : " created " ,
"_version" : 1
} Wenn ein Update mit demselben Inhalt aufgetreten ist, wird dieses Dokument gefunden und die Eigenschaft _version wird auf i++ aktualisiert.
Anfrage:
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. "
}Antwort:
{
"created" : false ,
"took" : 1 ,
"_index" : " myindex " ,
"_type" : " myindextype " ,
"_id" : 1 ,
"result" : " updated " ,
"_version" : 2
} Egal, ob Sie nach Word oder Phrase suchen müssen, fügen Sie JSON-Körper nur query->term hin.
Anfrage:
GET http://pheonixsearch.loc/myindex/myindextype?pretty {
"query" : {
"term" : { "title" : " Lorem ipsum " }
}
}Antwort:
{
"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. "
}
}
]
}
}Durch die Auslassung der Suchanforderung (wie in SQL), dass Sie zum Engine sagen - mit dem Sammeln von Dokumenten von J für k sammeln, für die Menge von K, wenn die Grenze festgelegt wurde.
Anfrage:
GET http://pheonixsearch.loc/myindex/myindextype?pretty {
"offset" : 10 ,
"limit" : 5 ,
"query" : {
"term" : { "text" : " quis " }
}
}Antwort:
{
"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. "
}
}
]
}
} Wenn Sie Wörter, Phrasen usw. hervorheben müssen, ist dies einfach genug, indem Sie highlight -Eigenschaften in das JSON -Schema hinzufügen.
{
"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. "
}
}
]
}
}Löscht ein Dokument durch seine ID und verringern den Zähler in Indexinformationen um 1.
DELETE http://pheonixsearch.loc/myindex/myindextype/2?prettyFür das vorhandene Dokument gibt es zurück:
{
"found" : true ,
"took" : 6 ,
"_index" : " myindex " ,
"_type" : " myindextype " ,
"_id" : 2 ,
"result" : " deleted " ,
"_version" : 1
}Für nicht existierendes Dokument:
{
"found" : false ,
"took" : 1 ,
"_index" : " myindex " ,
"_type" : " myindextype " ,
"_id" : 2 ,
"result" : " not found " ,
"_version" : 1
}Löscht eine gesamte Indexdaten aus Speicher.
DELETE http://pheonixsearch.loc/myindex/myindextypeAntwort:
{
"acknowledged" : true
} Die Meldung "acknowledged": true bedeutet, dass der Job unter dem Daemon phoenixsearchd verarbeitet wird.
Kopiert Dokumente von einem Index zu einem anderen mit den Zuordnungen des Quellindex standardmäßig.
POST http://pheonixsearch.loc/_reindex {
"source" : {
"index" : " myindex " ,
"index_type" : " myindextype "
},
"dest" : {
"index" : " myanotherindex " ,
"index_type" : " myanothertype "
}
}Antwort:
{
"acknowledged" : true
}Diese Anfrage gibt allgemeine Informationen zu allen Indizes aus, die noch gespeichert wurden.
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
}
] Der store_size ist die Größe des Speichers für alle Indizes von 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 bedeutet, dass keine Einschränkung auf String (Text) Länge angewendet wird, der whitespace -Typ ist der Standardtyp des umgekehrten Indexanalysators, der nur den Text von Whitespace -Token durchbricht.
Anfrage:
{
"offset" : 5 ,
"limit" : 10 ,
"highlight" : {
"pre_tags" : [ " <tag1> " , " <tag2> " ],
"post_tags" : [ " </tag1> " , " </tag2> " ],
"fields" : {
"name" : {}, "text" : {}
}
},
"query" : {
"term" : { "text" : " quis enim " }
}
}
Antwort:
{
"took" : 57 ,
"timed_out" : false ,
"hits" : {
"total" : 10 ... Anfrage:
{
"offset" : 5 ,
"limit" : 10 ,
"query" : {
"term" : { "text" : " quis enim " }
}
}Antwort:
{
"took" : 34 ,
"timed_out" : false ,
"hits" : {
"total" : 10 ... Anfrage:
{
"query" : {
"term" : { "text" : " quis enim " }
}
}Antwort:
{
"took" : 72 ,
"timed_out" : false ,
"hits" : {
"total" : 229 ... Anfrage:
{
"query" : {
"term" : { "text" : " quis " }
}
}Antwort:
{
"took" : 49 ,
"timed_out" : false ,
"hits" : {
"total" : 2450 ...Wie Sie sehen können, ist die Auswahl glänzend schnell, keine Magie - nur mit nativem C als Kern.
Anfrage:
{
"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 "
}Antwort:
{
"created" : true ,
"took" : 66 ...
}Anfrage:
http://pheonixsearch.loc/myindex/myindextype/44972?prettyAntwort:
{
"found" : true ,
"took" : 33 ...took gemessen