GithubHelp home page GithubHelp logo

Comments (9)

driesvints avatar driesvints commented on June 21, 2024 1

Going to close this one now but would like the PR from @Boorinio to be sent to 11.x instead. Thanks!

from scout.

yueyuzhao avatar yueyuzhao commented on June 21, 2024

For those who want to search with filters, you can set filters by options as:

$orders = Order::search('Star Trek')->options([
    'filters' => 'status:open OR status:paid',
])->get();

from scout.

driesvints avatar driesvints commented on June 21, 2024

Could you share an exact code sample to reproduce this?

from scout.

yueyuzhao avatar yueyuzhao commented on June 21, 2024

@driesvints

  1. Set the engine to algolia
  2. Set User model searchable (or any searchable model)
  3. Put the following code to your routes/console.php
  4. Run php artisan scout-where-in
// ......
use App\Models\User;
// ......

Artisan::command('scout-where-in', function () {
    User::search('hi')
        ->whereIn('status', ['open', 'paid'])
        ->get();
});

And you will get


  Algolia\AlgoliaSearch\Exceptions\BadRequestException 

  Invalid syntax for numeric condition:status=open

  at vendor/algolia/algoliasearch-client-php/src/RetryStrategy/ApiWrapper.php:221
    217▕ 
    218▕         if (404 == $statusCode) {
    219▕             throw new NotFoundException($responseArray['message'], $statusCode);
    220▕         } elseif ($statusCode >= 400) {
  ➜ 221▕             throw new BadRequestException($responseArray['message'], $statusCode);
    222▕         } elseif (2 != (int) ($statusCode / 100)) {
    223▕             throw new AlgoliaException($statusCode.': '.$body, $statusCode);
    224▕         }
    225▕ 

      +7 vendor frames 

  8   routes/console.php:9
      Laravel\Scout\Builder::get()
      +13 vendor frames 

  22  artisan:13
      Illuminate\Foundation\Application::handleCommand(Object(Symfony\Component\Console\Input\ArgvInput))

from scout.

driesvints avatar driesvints commented on June 21, 2024

I'm so confused. This indeed can't ever work how it's implemented right now but has been around for like 8 years already. I can't believe we never caught this before...

from scout.

driesvints avatar driesvints commented on June 21, 2024

Hah, I originally documented this 😂 laravel/docs#7550

I guess I misunderstood how this worked in Algolia. However, we can't change the docs since meilisearch and other engines now work this way. I feel like we should update the AlgoliaEngine to use filters instead of numericFilters. The Algolia docs also say this should be used preferable: https://www.algolia.com/doc/api-reference/api-parameters/numericFilters/

Screenshot 2024-05-17 at 12 12 01

The refactored code to filters should behave the same as in the code example from numericFilters below:

Screenshot 2024-05-17 at 12 18 12

from scout.

github-actions avatar github-actions commented on June 21, 2024

Thank you for reporting this issue!

As Laravel is an open source project, we rely on the community to help us diagnose and fix issues as it is not possible to research and fix every issue reported to us via GitHub.

If possible, please make a pull request fixing the issue you have described, along with corresponding tests. All pull requests are promptly reviewed by the Laravel team.

Thank you!

from scout.

Boorinio avatar Boorinio commented on June 21, 2024

@driesvints are we going to close this issue now?
#837

from scout.

Boorinio avatar Boorinio commented on June 21, 2024

Made a pr for 11.x
#839

from scout.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.