PhoenixSearch是基于Redis + PHP7的快速,现代全文实时搜索引擎


composer create-project phoenixsearch/phoenixsearch yourprojectpath/然后CD到您的ProjectPath/并运行:
php phoenixsearchd.php < key >密钥在您的.env文件中。
PS您需要phoenixsearchd才能执行长期运行的复杂任务Ex。:删除整个索引,将数据重新索引数据到另一个索引/indexType等
可以通过标题来识别该过程:
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开始收集J的文档。
要求:
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. "
}
}
]
}
}通过其ID删除一个文档,将索引信息中的计数器减少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意味着该作业是在守护程序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类型是默认类型的倒置索引分析仪,它只是通过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 ...如您所见,选择的速度非常快,没有魔术 - 只需将本机C作为核心重新介绍即可。
要求:
{
"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时间以毫秒为单位