PHP code example of shabushabu / laravel-paradedb-search
1. Go to this page and download the library: Download shabushabu/laravel-paradedb-search library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
shabushabu / laravel-paradedb-search example snippets
return [
'index_suffix' => '_idx',
];
use ShabuShabu\ParadeDB\Indices\Bm25;
return new class extends Migration
{
public function up(): void
{
Schema::create('products', static function (Blueprint $table) {
// all your product fields
});
Bm25::index('products')
->addNumericFields(['amount'])
->addBooleanFields(['is_available'])
->addDateFields(['created_at', 'deleted_at'])
->addJsonFields(['options'])
->addTextFields([
'name',
'currency',
'description' => [
'tokenizer' => [
'type' => 'default',
],
],
])
->create(drop: true);
}
public function down(): void
{
Bm25::index('products')->drop();
}
};
use Illuminate\Database\Eloquent\Model;
use ShabuShabu\ParadeDB\Concerns\Searchable;
class Product extends Model
{
use Searchable;
// the rest of the model...
}
use ShabuShabu\ParadeDB\ParadeQL\Builder;
Builder::make()->where('description', 'keyboard')->get();
// results in: description:keyboard
use ShabuShabu\ParadeDB\ParadeQL\Operators\Filter;
Builder::make()->whereFilter('rating', Filter::equals, 4)->get();
// results in: rating:4
use ShabuShabu\ParadeDB\ParadeQL\Operators\Filter;
Builder::make()->whereFilter('is_available', '=', false)->get();
// results in: is_available:false
use ShabuShabu\ParadeDB\ParadeQL\Operators\Filter;
Builder::make()->whereFilter('rating', '>', 4)->get();
// results in: rating:>4
use ShabuShabu\ParadeDB\ParadeQL\Operators\Range;
Builder::make()->whereFilter('rating', Range::
use ShabuShabu\ParadeDB\ParadeQL\Operators\Range;
Builder::make()->whereFilter('rating', Range::excludeAll, [2, 5])->get();
// results in: rating:{2 TO 5}
use ShabuShabu\ParadeDB\Query\Expressions\All;
Product::search()->where(new All())->get();
use ShabuShabu\ParadeDB\Query\Expressions\Blank;
Product::search()->where(new Blank())->get();
use ShabuShabu\ParadeDB\Query\Expressions\All;
use ShabuShabu\ParadeDB\Query\Expressions\Boost;
Product::search()->where(new Boost(new All(), 3.9))->get();
use ShabuShabu\ParadeDB\Query\Expressions\All;
use ShabuShabu\ParadeDB\Query\Expressions\ConstScore;
Product::search()->where(new ConstScore(new All(), 3.9))->get();
use ShabuShabu\ParadeDB\ParadeQL\Builder;
use ShabuShabu\ParadeDB\Query\Expressions\DisjunctionMax;
Product::search()->where(
new DisjunctionMax(Builder::make()->where('description', 'keyboard'))
)->get();
use ShabuShabu\ParadeDB\Query\Expressions\FuzzyTerm;
Product::search()->where(new FuzzyTerm('description', 'keyboard'))->get();
use ShabuShabu\ParadeDB\ParadeQL\Builder;
use ShabuShabu\ParadeDB\Query\Expressions\Highlight;
use ShabuShabu\ParadeDB\Query\Expressions\DisjunctionMax;
Product::search()
->select(['*', new Highlight('id', 'name')])
->where(new DisjunctionMax(Builder::make()->where('description', 'keyboard')))
->get();
use ShabuShabu\ParadeDB\ParadeQL\Builder;
use ShabuShabu\ParadeDB\Query\Expressions\Phrase;
Product::search()
->where(new Phrase('description', ['robot', 'building', 'kits']))
->get();
use ShabuShabu\ParadeDB\ParadeQL\Builder;
use ShabuShabu\ParadeDB\Query\Expressions\PhrasePrefix;
Product::search()
->where(new PhrasePrefix('description', ['robot', 'building', 'kits', 'am']))
->get();
use ShabuShabu\ParadeDB\Query\Expressions\Range;
use ShabuShabu\ParadeDB\Query\Expressions\Ranges\Int4;
use ShabuShabu\ParadeDB\Query\Expressions\Ranges\Bounds;
Product::search()
->stableSort()
->where(new Range('rating', new Int4(1, 3, Bounds::
use ShabuShabu\ParadeDB\ParadeQL\Builder;
use ShabuShabu\ParadeDB\Query\Expressions\Regex;
Product::search()
->where(new Regex('description', '(team|kits|blabla)'))
->get();
use ShabuShabu\ParadeDB\ParadeQL\Builder;
use ShabuShabu\ParadeDB\Query\Expressions\Term;
Product::search()
->where(new Term('description', 'building'))
->get();
use ShabuShabu\ParadeDB\ParadeQL\Builder;
use ShabuShabu\ParadeDB\Query\Expressions\Term;
use ShabuShabu\ParadeDB\Query\Expressions\TermSet;
Product::search()
->where(new TermSet([
new Term('description', 'building'),
new Term('description', 'things'),
]))
->get();
use App\Models\Product;
use ShabuShabu\ParadeDB\Query\Expressions\Range;
use ShabuShabu\ParadeDB\Query\Expressions\Boolean;
use ShabuShabu\ParadeDB\Query\Expressions\FuzzyTerm;
use ShabuShabu\ParadeDB\Query\Expressions\Ranges\TimestampTz;
Product::search()
->where(new Boolean(
must: [
new Range('created_at', new TimestampTz(null, now())),
],
should: [
new Boost(new FuzzyTerm('name', 'keyboard'), 2),
new FuzzyTerm('description', 'keyboard'),
],
mustNot: [
new Range('deleted_at', new TimestampTz(null, now())),
],
))
->get();
use ShabuShabu\ParadeDB\ParadeQL\Builder;
use ShabuShabu\ParadeDB\Query\Expressions\Term;
use ShabuShabu\ParadeDB\Query\Expressions\Rank;
Product::search()
->addSelect(new Rank('id'))
->where(new Term('description', 'building'))
->get();
use App\Models\Product;
use App\Models\Product;
use ShabuShabu\ParadeDB\ParadeQL\Builder;
Product::search()
->where(Builder::make()->where('description', 'keyboard'))
->paginate(20);
use App\Models\Product;
use App\Models\Product;
use ShabuShabu\ParadeDB\ParadeQL\Builder;
Product::search()
->where(Builder::make()->where('description', 'keyboard'))
->alias('alias')
->stableSort()
->limit(12)
->offset(24)
->get();
use App\Models\Product;
use ShabuShabu\ParadeDB\ParadeQL\Builder;
use ShabuShabu\ParadeDB\Query\Expressions\Distance;
use ShabuShabu\ParadeDB\Query\Expressions\Similarity;
Product::search()
->where(Builder::make()->where('description', 'keyboard'))
->where(new Similarity('embedding', Distance::l2, [1, 2, 3]))
->get();
use App\Models\Product;
use Illuminate\Database\Eloquent;
use ShabuShabu\ParadeDB\ParadeQL\Builder;
Product::search()
->modifyQueryUsing(fn (Eloquent\Builder $builder) => $builder->with('tags'))
->where(Builder::make()->where('description', 'keyboard'))
->get();
bash
php artisan paradedb:help
bash
composer analyse
bash
php artisan paradedb:test-table create
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.