PhoenixSearch é um mecanismo de pesquisa em tempo real rápido e moderno de texto completo com base no Redis + Php7


composer create-project phoenixsearch/phoenixsearch yourprojectpath/Em seguida, CD para o seu ProjectPath/ e Run:
php phoenixsearchd.php < key > A chave está no seu arquivo .env .
PS Você precisa de phoenixsearchd para executar tarefas complicadas de longa duração Ex.: Exclua um índice inteiro, dados de reindex para outro índice/indexType etc
É possível identificar o processo pelo título:
ps aux | grep phoenixsearch Indique um novo documento no armazenamento e incrementos docs_count nas informações de índice.
Solicitar:
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. "
}Resposta:
{
"created" : true ,
"took" : 23 ,
"_index" : " myindex " ,
"_type" : " myindextype " ,
"_id" : 2 ,
"result" : " created " ,
"_version" : 1
} Se ocorreu uma atualização com o mesmo conteúdo, este documento será encontrado e a propriedade _version será atualizada para i++ .
Solicitar:
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. "
}Resposta:
{
"created" : false ,
"took" : 1 ,
"_index" : " myindex " ,
"_type" : " myindextype " ,
"_id" : 1 ,
"result" : " updated " ,
"_version" : 2
} Se você precisa pesquisar por palavra ou frase, basta adicionar query->term ao corpo JSON.
Solicitar:
GET http://pheonixsearch.loc/myindex/myindextype?pretty {
"query" : {
"term" : { "title" : " Lorem ipsum " }
}
}Resposta:
{
"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. "
}
}
]
}
}Ao compensar a solicitação de pesquisa (como no SQL), você está dizendo para o motor - comece a coletar documentos de J, por uma quantidade de k se o limite foi definido.
Solicitar:
GET http://pheonixsearch.loc/myindex/myindextype?pretty {
"offset" : 10 ,
"limit" : 5 ,
"query" : {
"term" : { "text" : " quis " }
}
}Resposta:
{
"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. "
}
}
]
}
} Quando você precisa destacar palavras, frases etc., é simples o suficiente para adicionar a propriedade highlight à JSON Scheme.
{
"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. "
}
}
]
}
}Exclui um documento por seu ID, diminuindo o contador nas informações do índice em 1.
DELETE http://pheonixsearch.loc/myindex/myindextype/2?prettyPara o documento existente, ele retorna:
{
"found" : true ,
"took" : 6 ,
"_index" : " myindex " ,
"_type" : " myindextype " ,
"_id" : 2 ,
"result" : " deleted " ,
"_version" : 1
}Para documento inexistente:
{
"found" : false ,
"took" : 1 ,
"_index" : " myindex " ,
"_type" : " myindextype " ,
"_id" : 2 ,
"result" : " not found " ,
"_version" : 1
}Exclui todos os dados de índice do armazenamento.
DELETE http://pheonixsearch.loc/myindex/myindextypeResposta:
{
"acknowledged" : true
} A mensagem "acknowledged": true significa que o trabalho é processado sob o Daemon phoenixsearchd .
Copia documentos de um índice para outro com mapeamentos do índice de origem por padrão.
POST http://pheonixsearch.loc/_reindex {
"source" : {
"index" : " myindex " ,
"index_type" : " myindextype "
},
"dest" : {
"index" : " myanotherindex " ,
"index_type" : " myanothertype "
}
}Resposta:
{
"acknowledged" : true
}Esta solicitação produzirá informações gerais sobre todos os índices, que ainda foram armazenados.
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
}
] O store_size é o tamanho do armazenamento para todos os índices obtidos do 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 significa que nenhuma restrição no comprimento da string (texto) é aplicada, o tipo de whitespace é o tipo padrão de analisador de índice invertido que apenas quebra o texto por tokens de espaço em branco.
Solicitar:
{
"offset" : 5 ,
"limit" : 10 ,
"highlight" : {
"pre_tags" : [ " <tag1> " , " <tag2> " ],
"post_tags" : [ " </tag1> " , " </tag2> " ],
"fields" : {
"name" : {}, "text" : {}
}
},
"query" : {
"term" : { "text" : " quis enim " }
}
}
Resposta:
{
"took" : 57 ,
"timed_out" : false ,
"hits" : {
"total" : 10 ... Solicitar:
{
"offset" : 5 ,
"limit" : 10 ,
"query" : {
"term" : { "text" : " quis enim " }
}
}Resposta:
{
"took" : 34 ,
"timed_out" : false ,
"hits" : {
"total" : 10 ... Solicitar:
{
"query" : {
"term" : { "text" : " quis enim " }
}
}Resposta:
{
"took" : 72 ,
"timed_out" : false ,
"hits" : {
"total" : 229 ... Solicitar:
{
"query" : {
"term" : { "text" : " quis " }
}
}Resposta:
{
"took" : 49 ,
"timed_out" : false ,
"hits" : {
"total" : 2450 ...Como você pode ver, a seleção é incrivelmente rápida, sem mágica - apenas redis com C nativo como núcleo.
Solicitar:
{
"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 "
}Resposta:
{
"created" : true ,
"took" : 66 ...
}Solicitar:
http://pheonixsearch.loc/myindex/myindextype/44972?prettyResposta:
{
"found" : true ,
"took" : 33 ...took um tempo medido em milissegundos