Download the PHP package flowpack/searchplugin without Composer

On this page you can find all versions of the php package flowpack/searchplugin. 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 searchplugin

Flowpack.SearchPlugin

Latest Stable Version Total Downloads

This plugin is a Search Plugin, to be used together with

Installation

Install via composer with your favorite adaptor:

ElasticSearch

composer require flowpack/searchplugin flowpack/elasticsearch-contentrepositoryadaptor

SimpleSearch

composer require flowpack/searchplugin flowpack/simplesearch-contentrepositoryadaptor

Inclusion of the routes from this package into your main Configuration/Routes.yaml is no longer needed as of Flow 4.0.

Configuration

Custom index name

It is usually a good idea to specify a custom index name for a project, instead of the default typo3cr. That way no conflicts can arise when multiple projects use the same Elasticsearch server.

To specify a custom index name, the following is needed:

Neos:
  ContentRepository:
    Search:
      elasticSearch:
        indexName: acmecom

Pagination

The pagination search results can be configured via Fusion. The following shows the defaults:

prototype(Flowpack.SearchPlugin:Search).configuration {
    itemsPerPage = 25
    insertAbove = false
    insertBelow = true
    maximumNumberOfLinks = 10
}

Custom result rendering

The result list is rendered using a Fusion object of type nodeType + 'SearchResult' for each hit. Thus you can easily adjust the rendering per type like this for an imaginary Acme.AcmeCom:Product nodetype:

prototype(Acme.AcmeCom:ProductSearchResult) < prototype(Neos.Neos:DocumentSearchResult) {
    templatePath = 'resource://Acme.AcmeCom/Private/Templates/SearchResult/ProductSearchResult.html'
}

Feel free to use the DocumentSearchResult.html in the Flowpack.SearchPlugin as an example.

Search completions and suggestions

The default search form template comes with a data-autocomplete-source attribute pointing to the SuggestController of this package.

To use this term suggester, you need to configure the indexing like this, to define a custom analyzer to be used:

Flowpack:
  ElasticSearch:
    indexes:
      default:      # client name used to connect (see Flowpack.ElasticSearch.clients)
        acmecom:    # your (custom) index name
          settings:
            analysis:
              filter:
                autocompleteFilter:
                  max_shingle_size: 5
                  min_shingle_size: 2
                  type: 'shingle'
              analyzer:
                autocomplete:
                  filter: [ 'lowercase', 'autocompleteFilter' ]
                  char_filter: [ 'html_strip' ]
                  type: 'custom'
                  tokenizer: 'standard'

Then you need to configure the node types to be be included in the suggestion building, this can be done like this:

'Neos.Neos:Document':
  superTypes:
    'Flowpack.SearchPlugin:SuggestableMixin': true
    'Flowpack.SearchPlugin:AutocompletableMixin': true

'Neos.Neos:Shortcut':
  superTypes:
    'Flowpack.SearchPlugin:SuggestableMixin': false
    'Flowpack.SearchPlugin:AutocompletableMixin': false

'Neos.NodeTypes:TitleMixin':
  superTypes:
    'Flowpack.SearchPlugin:SuggestableMixin': true
    'Flowpack.SearchPlugin:AutocompletableMixin': true

When fed with a term parameter via a GET request, the SuggestController will return a JSON-encoded array of suggestions from Elasticsearch. They are fetched with a term suggester from the _all field, i.e. "the fulltext index".

These can be used to provide autocompletion on the search input using a JS library of your choice. In case you need to build the URI to the suggest controller yourself, this is what the form uses:

{f:uri.action(action: 'index', controller: 'Suggest', package: 'Flowpack.SearchPlugin', format: 'json', absolute: 1, arguments: {contextNodeIdentifier: node.identifier, dimensionCombination: dimensionCombination})}

Adjust the suggestion context

The suggestionContext determines, if a result should be displayed in suggetions. By default, nodes that are hidden are excluded. In many projects, the search als takes the Neos.Seo metaRobotsNoindex property into account or excludes certain nodeTypes. In order to adjust the suggestion context to your search logic, you can write your custom logic and switch the implementation of the Flowpack\SearchPlugin\Suggestion\SuggestionContextInterface via Objects.yaml

Create URIs for suggestions

To create valid links for suggestions the following package can be used:

Connect the given example of this package with a custom fusion object:

pathToProtoType = Your.Vendor:Content.NodeLink

And finally add the new property to the plugin settings:

Flowpack:
  SearchPlugin:
    searchAsYouType:
      suggestions:
        sourceFields:
          - title
          - __myProperty

AJAX search

The plugin comes with a controller that can be reached like this per default, using GET:

{f:uri.action(action: 'search', controller: 'AjaxSearch', package: 'Flowpack.SearchPlugin', arguments: {node: node, q: ''}, absolute: 1)}

It expects the search term as a parameter named q (as defined in AjaxSearch.fusion). This controller renders the search results and returns them as HTML without any of the page template. It can therefore be used to request search results via AJAX and display the result by adding it to the DOM as needed.

Removing special chars from search term

It is recommended to remove characters, which are reserved in Elasticsearch from the search term to prevent errors. There is an eel helper to replace them before submitting the search like this:

prototype(Flowpack.SearchPlugin:Search) {
    searchTerm = ${Flowpack.SearchPlugin.SearchTerm.sanitize(request.arguments.search)}
}

Keep in mind, that this blocks the explicit use of wildcards (*) and phrase search ("search exactly this") for your users, in case you want to support that.


All versions of searchplugin with dependencies

PHP Build Version
Package Version
Requires neos/content-repository Version ^4.0 || ^5.0 || ^7.0 || ^8.0 || dev-master
neos/content-repository-search Version ^4.0 || dev-master
neos/eel Version ^5.0 || ^6.0 || ^7.0 || ^8.0 || dev-master
neos/flow Version ^5.0 || ^6.0 || ^7.0 || ^8.0 || dev-master
neos/fusion Version ^4.0 || ^5.0 || ^7.0 || ^8.0 || dev-master
neos/neos Version ^4.0 || ^5.0 || ^7.0 || ^8.0 || dev-master
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 flowpack/searchplugin contains the following files

Loading the files please wait ....