386
386
Configure the Scout Driver
387
387
</ a >
388
388
389
+ </ li >
390
+
391
+ < li class ="md-nav__item ">
392
+ < a href ="#define-searchable-schema " title ="Define Searchable Schema " class ="md-nav__link ">
393
+ Define Searchable Schema
394
+ </ a >
395
+
389
396
</ li >
390
397
391
398
< li class ="md-nav__item ">
392
399
< a href ="#import-a-model " title ="Import a Model " class ="md-nav__link ">
393
400
Import a Model
394
401
</ a >
395
402
403
+ </ li >
404
+
405
+ < li class ="md-nav__item ">
406
+ < a href ="#query-filters " title ="Query Filters " class ="md-nav__link ">
407
+ Query Filters
408
+ </ a >
409
+
396
410
</ li >
397
411
398
412
</ ul >
477
491
Configure the Scout Driver
478
492
</ a >
479
493
494
+ </ li >
495
+
496
+ < li class ="md-nav__item ">
497
+ < a href ="#define-searchable-schema " title ="Define Searchable Schema " class ="md-nav__link ">
498
+ Define Searchable Schema
499
+ </ a >
500
+
480
501
</ li >
481
502
482
503
< li class ="md-nav__item ">
483
504
< a href ="#import-a-model " title ="Import a Model " class ="md-nav__link ">
484
505
Import a Model
485
506
</ a >
486
507
508
+ </ li >
509
+
510
+ < li class ="md-nav__item ">
511
+ < a href ="#query-filters " title ="Query Filters " class ="md-nav__link ">
512
+ Query Filters
513
+ </ a >
514
+
487
515
</ li >
488
516
489
517
</ ul >
@@ -535,6 +563,54 @@ <h3 id="configure-the-scout-driver">Configure the Scout Driver<a class="headerli
535
563
< div class ="codehilite "> < pre > < span > </ span > < span class ="s1 "> 'driver'</ span > < span class ="o "> =></ span > < span class ="nx "> env</ span > < span class ="p "> (</ span > < span class ="s1 "> 'SCOUT_DRIVER'</ span > < span class ="p "> ,</ span > < span class ="s1 "> 'ehann-redisearch'</ span > < span class ="p "> ),</ span >
536
564
</ pre > </ div >
537
565
566
+ < h3 id ="define-searchable-schema "> Define Searchable Schema< a class ="headerlink " href ="#define-searchable-schema " title ="Permanent link "> ¶</ a > </ h3 >
567
+ < p > Define the field types that will be used on indexing</ p >
568
+ < div class ="codehilite "> < pre > < span > </ span > < span class ="cp "> <?php</ span >
569
+
570
+ < span class ="k "> namespace</ span > < span class ="nx "> App</ span > < span class ="p "> ;</ span >
571
+
572
+ < span class ="k "> use</ span > < span class ="nx "> Laravel\Scout\Searchable</ span > < span class ="p "> ;</ span >
573
+ < span class ="o "> ...</ span >
574
+ < span class ="k "> use</ span > < span class ="nx "> Ehann\RediSearch\Fields\TextField</ span > < span class ="p "> ;</ span >
575
+ < span class ="k "> use</ span > < span class ="nx "> Ehann\RediSearch\Fields\GeoField</ span > < span class ="p "> ;</ span >
576
+ < span class ="k "> use</ span > < span class ="nx "> Ehann\RediSearch\Fields\NumericField</ span > < span class ="p "> ;</ span >
577
+ < span class ="k "> use</ span > < span class ="nx "> Ehann\RediSearch\Fields\TagField</ span > < span class ="p "> ;</ span >
578
+ < span class ="k "> use</ span > < span class ="nx "> Ehann\RediSearch\Fields\GeoLocation</ span > < span class ="p "> ;</ span >
579
+ < span class ="o "> ...</ span >
580
+
581
+ < span class ="k "> class</ span > < span class ="nc "> User</ span > < span class ="k "> extends</ span > < span class ="nx "> Model</ span > < span class ="p "> {</ span >
582
+ < span class ="k "> use</ span > < span class ="nx "> Searchable</ span > < span class ="p "> ;</ span >
583
+
584
+ < span class ="k "> public</ span > < span class ="k "> function</ span > < span class ="nf "> searchableAs</ span > < span class ="p "> ()</ span >
585
+ < span class ="p "> {</ span >
586
+ < span class ="k "> return</ span > < span class ="s2 "> "user_index"</ span > < span class ="p "> ;</ span >
587
+ < span class ="p "> }</ span >
588
+
589
+ < span class ="k "> public</ span > < span class ="k "> function</ span > < span class ="nf "> toSearchableArray</ span > < span class ="p "> ()</ span >
590
+ < span class ="p "> {</ span >
591
+ < span class ="k "> return</ span > < span class ="p "> [</ span >
592
+ < span class ="s2 "> "name"</ span > < span class ="o "> =></ span > < span class ="nv "> $this</ span > < span class ="o "> -></ span > < span class ="na "> name</ span > < span class ="p "> ,</ span >
593
+ < span class ="s2 "> "username"</ span > < span class ="o "> =></ span > < span class ="nv "> $this</ span > < span class ="o "> -></ span > < span class ="na "> username</ span > < span class ="p "> ,</ span >
594
+ < span class ="s2 "> "location"</ span > < span class ="o "> =></ span > < span class ="k "> new</ span > < span class ="nx "> GeoLocation</ span > < span class ="p "> (</ span >
595
+ < span class ="nv "> $this</ span > < span class ="o "> -></ span > < span class ="na "> longitude</ span > < span class ="p "> ,</ span >
596
+ < span class ="nv "> $this</ span > < span class ="o "> -></ span > < span class ="na "> latitude</ span >
597
+ < span class ="p "> )</ span >
598
+ < span class ="s2 "> "age"</ span > < span class ="o "> =></ span > < span class ="nv "> $this</ span > < span class ="o "> -></ span > < span class ="na "> age</ span > < span class ="p "> ,</ span >
599
+ < span class ="p "> ];</ span >
600
+ < span class ="p "> }</ span >
601
+
602
+ < span class ="k "> public</ span > < span class ="k "> function</ span > < span class ="nf "> searchableSchema</ span > < span class ="p "> ()</ span >
603
+ < span class ="p "> {</ span >
604
+ < span class ="k "> return</ span > < span class ="p "> [</ span >
605
+ < span class ="s2 "> "name"</ span > < span class ="o "> =></ span > < span class ="nx "> TextField</ span > < span class ="o "> ::</ span > < span class ="na "> class</ span > < span class ="p "> ,</ span >
606
+ < span class ="s2 "> "username"</ span > < span class ="o "> =></ span > < span class ="nx "> TextField</ span > < span class ="o "> ::</ span > < span class ="na "> class</ span > < span class ="p "> ,</ span >
607
+ < span class ="s2 "> "location"</ span > < span class ="o "> =></ span > < span class ="nx "> GeoField</ span > < span class ="o "> ::</ span > < span class ="na "> class</ span > < span class ="p "> ,</ span >
608
+ < span class ="s2 "> "age"</ span > < span class ="o "> =></ span > < span class ="nx "> NumericField</ span > < span class ="o "> ::</ span > < span class ="na "> class</ span >
609
+ < span class ="p "> ];</ span >
610
+ < span class ="p "> }</ span >
611
+ < span class ="p "> }</ span >
612
+ </ pre > </ div >
613
+
538
614
< h3 id ="import-a-model "> Import a Model< a class ="headerlink " href ="#import-a-model " title ="Permanent link "> ¶</ a > </ h3 >
539
615
< p > Import a "Product" model that is < a href ="https://laravel.com/docs/5.6/scout#configuration "> configured to be searchable</ a > :</ p >
540
616
< div class ="codehilite "> < pre > < span > </ span > artisan ehann:redisearch:import App< span class ="se "> \\</ span > Product
@@ -548,8 +624,16 @@ <h3 id="import-a-model">Import a Model<a class="headerlink" href="#import-a-mode
548
624
< div class ="codehilite "> < pre > < span > </ span > artisan ehann:redisearch:import App< span class ="se "> \\</ span > Product --no-id
549
625
</ pre > </ div >
550
626
627
+ < h3 id ="query-filters "> Query Filters< a class ="headerlink " href ="#query-filters " title ="Permanent link "> ¶</ a > </ h3 >
628
+ < p > How To Query Filters? < a href ="http://www.ethanhann.com/redisearch-php/searching/#filtering-tag-fields "> Filtering Tag Fields</ a > </ p >
629
+ < div class ="codehilite "> < pre > < span > </ span > < span class ="x "> App\User::search("Search Query", function($index){</ span >
630
+ < span class ="x "> return $filter->geoFilter("location", 5.56475, 5.75516, 100)</ span >
631
+ < span class ="x "> ->numericFilter('age', 18, 32)</ span >
632
+ < span class ="x "> })->get()</ span >
633
+ </ pre > </ div >
634
+
551
635
< h2 id ="what-now "> What now?< a class ="headerlink " href ="#what-now " title ="Permanent link "> ¶</ a > </ h2 >
552
- < p > See the < a href ="https://laravel.com/docs/5.6/scout "> Laravel Scout</ a > documentation for additional information. </ p >
636
+ < p > See the < a href ="https://laravel.com/docs/5.6/scout "> Laravel Scout</ a > documentation for additional information.</ p >
553
637
554
638
555
639
0 commit comments