Download the PHP package spatie/elasticsearch-search-string-parser without Composer

On this page you can find all versions of the php package spatie/elasticsearch-search-string-parser. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package elasticsearch-search-string-parser

Parse custom search strings and execute them using ElasticSearch

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

This package allows you to convert a search string like foo bar status:active @john.doe to its corresponding ElasticSearch request. Any custom directives like status:active and @john.doe can be added using regex and the spatie/elasticsearch-query-builder. There's also basic support for grouping directives (e.g. group_by:project) and providing auto-completion suggestions for certain directives.

In the example above, an ElasticSearch request is executed with the appropriate parameters set to search for results with the given company (aperture), user (glados) and subject string (deadly neurotoxin). The returned value is a \Spatie\ElasticsearchStringParser\SearchResults object that contains search results and suggestions for the applied directives.

Support us

We invest a lot of resources into creating best in class open source packages . You can support us by buying one of our paid products.

We highly appreciate you sending us a postcard from your hometown, mentioning which of our package(s) you are using. You'll find our address on our contact page. We publish all received postcards on our virtual postcard wall.

Installation

You can install the package via composer:

How it works: directives

When creating a search string parser, you decide how each part of the search string is parsed by defining directives. When a directive is found in the search string, it is applied to the underlying ElasticSearch. Directives can be used to add basic match queries but also to add sorts, aggregations, facets, etc...

Let's dive into the inner workings of the package by dissecting an example search string and its parser:

A search string parser can have multiple PatternDirectives and at most one BaseDirective. In the example search string there are two pattern directives: company:aperture and @glados. These will be parsed by the CompanyDirective and UserDirective. The remaining string (cheap nearotoxin deadly) will be processed by the base directive.

To do this, we'll loop over all configured pattern directives. Each patter directive has a regular expression it looks for. If one of the directives finds a match in the search string, it will be applied and the match will be removed from the search string. The process is then repeated for the next match or the next pattern directive.

Back to our example: the CompanyDirective is configured to match company:(.*). In the example string, this regex pattern will match company:aperture. This means the CompanyDirective will be applied and a query for company_name="aperture" will be added to the ElasticSearch builder. Finally, the directive is removed from the search string, leaving us with the following string:

As there are no other matches for the CompanyDirective, we'll look for the UserDirective next. The user directive will search for @(.*) and thus match @glados. The UserDirective will now apply its queries to the ElasticSearch builder and remove the matches string. We're left with:

There are no pattern directives left to apply. The entire remaining string is then passed to the SubjectBaseDirective. This base directive then decides what to do with the remaining search string, for example, using it for a fuzzy search on the subject field.

Usage

Testing

Changelog

Please see CHANGELOG for more information on what has changed recently.

Contributing

Please see CONTRIBUTING for details.

Security Vulnerabilities

Please review our security policy on how to report security vulnerabilities.

Credits

License

The MIT License (MIT). Please see License File for more information.


All versions of elasticsearch-search-string-parser with dependencies

PHP Build Version
Package Version
Requires php Version ^8.0
elasticsearch/elasticsearch Version ^7.12
illuminate/collections Version ^8.40|^9.0|^10.0
spatie/elasticsearch-query-builder Version ^1.0
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package spatie/elasticsearch-search-string-parser contains the following files

Loading the files please wait ....