Code Monkey home page Code Monkey logo

flowpack.simplesearch.contentrepositoryadaptor's Introduction

SensioLabs Insight Code Climate

SimpleSearch ContentRepositoryAdaptor

A search for the Neos Content Repository based on the SimpleSearch. This package is an implementation of the Neos.ContentRepository.Search API.

Usage is pretty easy. Install this (and Flowpack.SimpleSearch will follow).

Run the command:

./flow nodeindex:build

After that use the "Search" helper in EEL or the QueryBuilder in PHP to query the index.

With a few hundred nodes queries should be answered in a few milliseconds max. My biggest test so far was with around 23000 nodes which still got me reasonable query times of about 300ms. If you have more Nodes to index you should probably consider using a "real" search engine like ElasticSearch.

Using MySQL

To use MySQL, switch the implementation for the interfaces in your Objects.yaml and configure the DB connection as needed:

Flowpack\SimpleSearch\Domain\Service\IndexInterface:
  className: 'Flowpack\SimpleSearch\Domain\Service\MysqlIndex'

Neos\ContentRepository\Search\Search\QueryBuilderInterface:
  className: 'Flowpack\SimpleSearch\ContentRepositoryAdaptor\Search\MysqlQueryBuilder'

Flowpack\SimpleSearch\Domain\Service\MysqlIndex:
  arguments:
    1:
      value: 'Neos_CR'
    2:
      value: 'mysql:host=%env:DATABASE_HOST%;dbname=%env:DATABASE_NAME%;charset=utf8mb4'
  properties:
    username:
      value: '%env:DATABASE_USERNAME%'
    password:
      value: '%env:DATABASE_PASSWORD%'

The arguments are the index identifier (can be chosen freely) and the DSN.

flowpack.simplesearch.contentrepositoryadaptor's People

Contributors

dimaip avatar dlubitz avatar futjikato avatar ger4003 avatar gerhard-boden avatar kdambekalns avatar kitsunet avatar mficzel avatar mgoldbeck avatar saschanowak avatar skurfuerst avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

flowpack.simplesearch.contentrepositoryadaptor's Issues

Parent node not found when trying to add or publish nodes

I updated to 4.0.0. Since then I get the error:

Parent node not found - Check the logs for details

when trying to publish or add new nodes. I get the error in every language dimension and every workspace regardless of the document node I am at. It isn't specific to document or content nodes. It affects both types.
Sometimes the nodes get added/published nevertheless. But working that way is painful.

Log

Exception #1542983610 in line 258 of /www/htdocs/w019eff2/neos/Data/Temporary/Development/Cache/Code/Flow_Object_Classes/Flowpack_SimpleSearch_ContentRepositoryAdaptor_Indexer_NodeIndexer.php: Parent node not found

53 Neos\ContentRepository\Domain\Model\Node_Original::findParentNode()
52 Flowpack\SimpleSearch\ContentRepositoryAdaptor\Indexer\NodeIndexer_Original::findFulltextRoot(Neos\ContentRepository\Domain\Model\Node)
51 Flowpack\SimpleSearch\ContentRepositoryAdaptor\Indexer\NodeIndexer_Original::addFulltextToRoot(Neos\ContentRepository\Domain\Model\Node, array|1|)
50 Flowpack\SimpleSearch\ContentRepositoryAdaptor\Indexer\NodeIndexer_Original::indexNode(Neos\ContentRepository\Domain\Model\Node, NULL, false)
49 Flowpack\SimpleSearch\ContentRepositoryAdaptor\Indexer\NodeIndexer_Original::Flowpack\SimpleSearch\ContentRepositoryAdaptor\Indexer\{closure}()
48 Closure::__invoke()
47 Neos\Flow\Security\Context_Original::withoutAuthorizationChecks(Closure)
46 Flowpack\SimpleSearch\ContentRepositoryAdaptor\Indexer\NodeIndexer_Original::indexNodeInWorkspace("fc799ead-1f78-42ee-949b-33386f3b28bf", "user-admin")
45 Flowpack\SimpleSearch\ContentRepositoryAdaptor\Indexer\NodeIndexer_Original::indexAllNodeVariants(Neos\ContentRepository\Domain\Model\Node)
44 Flowpack\SimpleSearch\ContentRepositoryAdaptor\Indexer\NodeIndexer_Original::indexNode(Neos\ContentRepository\Domain\Model\Node)
43 Neos\ContentRepository\Search\Indexer\NodeIndexingManager_Original::Neos\ContentRepository\Search\Indexer\{closure}()
42 Neos\ContentRepository\Search\Indexer\NodeIndexingManager_Original::flushQueues()
41 call_user_func_array(array|2|, array|0|)
40 Neos\Flow\SignalSlot\Dispatcher::dispatch("Neos\Flow\Persistence\Doctrine\PersistenceManager", "allObjectsPersisted", array|0|)
39 Neos\Flow\SignalSlot\SignalAspect_Original::forwardSignalToDispatcher(Neos\Flow\Aop\JoinPoint)
38 Neos\Flow\Aop\Advice\AbstractAdvice::invoke(Neos\Flow\Aop\JoinPoint)
37 Neos\Flow\Persistence\Doctrine\PersistenceManager::emitAllObjectsPersisted()
36 Neos\Flow\Persistence\Doctrine\PersistenceManager_Original::persistAll()
35 Neos\Flow\Package::Neos\Flow\{closure}(Neos\Flow\Mvc\ActionRequest, Neos\Flow\Mvc\ActionResponse, Neos\Neos\Ui\Controller\BackendServiceController, "Neos\Flow\Mvc\Dispatcher::afterControllerInvocation")
34 Closure::__invoke(Neos\Flow\Mvc\ActionRequest, Neos\Flow\Mvc\ActionResponse, Neos\Neos\Ui\Controller\BackendServiceController, "Neos\Flow\Mvc\Dispatcher::afterControllerInvocation")
33 call_user_func_array(array|2|, array|4|)
32 Neos\Flow\SignalSlot\Dispatcher::dispatch("Neos\Flow\Mvc\Dispatcher", "afterControllerInvocation", array|3|)
31 Neos\Flow\SignalSlot\SignalAspect_Original::forwardSignalToDispatcher(Neos\Flow\Aop\JoinPoint)
30 Neos\Flow\Aop\Advice\AbstractAdvice::invoke(Neos\Flow\Aop\JoinPoint)
29 Neos\Flow\Mvc\Dispatcher::emitAfterControllerInvocation(Neos\Flow\Mvc\ActionRequest, Neos\Flow\Mvc\ActionResponse, Neos\Neos\Ui\Controller\BackendServiceController)
28 Neos\Flow\Mvc\Dispatcher_Original::initiateDispatchLoop(Neos\Flow\Mvc\ActionRequest, Neos\Flow\Mvc\ActionResponse)
27 Neos\Flow\Mvc\Dispatcher_Original::dispatch(Neos\Flow\Mvc\ActionRequest, Neos\Flow\Mvc\ActionResponse)
26 Neos\Flow\Mvc\DispatchMiddleware_Original::process(GuzzleHttp\Psr7\ServerRequest, Neos\Flow\Http\Middleware\MiddlewaresChain)
25 Neos\Flow\Http\Middleware\MiddlewaresChain_Original::handle(GuzzleHttp\Psr7\ServerRequest)
24 Neos\Flow\Http\Middleware\SecurityEntryPointMiddleware_Original::process(GuzzleHttp\Psr7\ServerRequest, Neos\Flow\Http\Middleware\MiddlewaresChain)
23 Neos\Flow\Http\Middleware\MiddlewaresChain_Original::handle(GuzzleHttp\Psr7\ServerRequest)
22 Neos\Flow\Http\Middleware\RequestBodyParsingMiddleware_Original::process(GuzzleHttp\Psr7\ServerRequest, Neos\Flow\Http\Middleware\MiddlewaresChain)
21 Neos\Flow\Http\Middleware\MiddlewaresChain_Original::handle(GuzzleHttp\Psr7\ServerRequest)
20 Neos\Flow\Mvc\FlashMessage\FlashMessageMiddleware_Original::process(GuzzleHttp\Psr7\ServerRequest, Neos\Flow\Http\Middleware\MiddlewaresChain)
19 Neos\Flow\Http\Middleware\MiddlewaresChain_Original::handle(GuzzleHttp\Psr7\ServerRequest)
18 Neos\Flow\Http\Middleware\PoweredByMiddleware_Original::process(GuzzleHttp\Psr7\ServerRequest, Neos\Flow\Http\Middleware\MiddlewaresChain)
17 Neos\Flow\Http\Middleware\MiddlewaresChain_Original::handle(GuzzleHttp\Psr7\ServerRequest)
16 Neos\RedirectHandler\RedirectMiddleware_Original::process(GuzzleHttp\Psr7\ServerRequest, Neos\Flow\Http\Middleware\MiddlewaresChain)
15 Neos\Flow\Http\Middleware\MiddlewaresChain_Original::handle(GuzzleHttp\Psr7\ServerRequest)
14 Neos\Flow\Mvc\Routing\RoutingMiddleware_Original::process(GuzzleHttp\Psr7\ServerRequest, Neos\Flow\Http\Middleware\MiddlewaresChain)
13 Neos\Flow\Http\Middleware\MiddlewaresChain_Original::handle(GuzzleHttp\Psr7\ServerRequest)
12 Neos\Neos\Routing\RequestUriHostMiddleware_Original::process(GuzzleHttp\Psr7\ServerRequest, Neos\Flow\Http\Middleware\MiddlewaresChain)
11 Neos\Flow\Http\Middleware\MiddlewaresChain_Original::handle(GuzzleHttp\Psr7\ServerRequest)
10 Neos\FluidAdaptor\Core\Widget\AjaxWidgetMiddleware_Original::process(GuzzleHttp\Psr7\ServerRequest, Neos\Flow\Http\Middleware\MiddlewaresChain)
9 Neos\Flow\Http\Middleware\MiddlewaresChain_Original::handle(GuzzleHttp\Psr7\ServerRequest)
8 Neos\Flow\Http\Middleware\SessionMiddleware_Original::process(GuzzleHttp\Psr7\ServerRequest, Neos\Flow\Http\Middleware\MiddlewaresChain)
7 Neos\Flow\Http\Middleware\MiddlewaresChain_Original::handle(GuzzleHttp\Psr7\ServerRequest)
6 Neos\Flow\Http\Middleware\TrustedProxiesMiddleware_Original::process(GuzzleHttp\Psr7\ServerRequest, Neos\Flow\Http\Middleware\MiddlewaresChain)
5 Neos\Flow\Http\Middleware\MiddlewaresChain_Original::handle(GuzzleHttp\Psr7\ServerRequest)
4 Neos\Flow\Http\Middleware\StandardsComplianceMiddleware_Original::process(GuzzleHttp\Psr7\ServerRequest, Neos\Flow\Http\Middleware\MiddlewaresChain)
3 Neos\Flow\Http\Middleware\MiddlewaresChain_Original::handle(GuzzleHttp\Psr7\ServerRequest)
2 Neos\Flow\Http\RequestHandler::handleRequest()
1 Neos\Flow\Core\Bootstrap::run()

Versions

 Flowpack.SimpleSearch                              5.0.0          
 Flowpack.SimpleSearch.ContentRepositoryAdaptor     4.0.0          
 Neos.Cache                                         7.1.1          
 Neos.ContentRepository                             7.1.0          
 Neos.ContentRepository.Search                      4.1.0   
 Neos.Eel                                           7.1.1          
 Neos.Flow                                          7.1.1          
 Neos.FluidAdaptor                                  7.1.1          
 Neos.Fusion                                        7.1.0          
 Neos.Neos                                          7.1.0 

Access denied when indexing different workspaces

When I want to publish a change, the "update" xhr request returns a 403 Forbidden error, when the indexer tries to index the workspace of other users.

If I delete all other users, so just the current and the live workspace are availabe, this problem does not occur anymore.

This could be related to the nested workspaces feature.

Error message:

#1222268609: Access denied for method
Method: TYPO3\TYPO3CR\Domain\Service\Context::validateWorkspace()

Evaluated following 1 privilege target(s):
"TYPO3.Neos:Backend.OtherUsersPersonalWorkspaceAccess": ABSTAIN
(0 granted, 0 denied, 1 abstained)

Authenticated roles: TYPO3.Flow:Everybody, TYPO3.Flow:AuthenticatedUser, TYPO3.Neos:Administrator, TYPO3.Neos:Editor, TYPO3.Neos:AbstractEditor, TYPO3.TYPO3CR:Administrator, TYPO3.Neos:LivePublisher
37 TYPO3\Flow\Security\Authorization\Interceptor\PolicyEnforcement_Original::invoke()

/data/www/typo3-app/Data/Temporary/Development/Cache/Code/Flow_Object_Classes/TYPO3_Flow_Security_Aspect_PolicyEnforcementAspect.php:
00061:         if ($this->securityContext->areAuthorizationChecksDisabled() !== true) {
00062:             $this->policyEnforcementInterceptor->setJoinPoint($joinPoint);
00063:             $this->policyEnforcementInterceptor->invoke();
00064:         }
00065: 

36 TYPO3\Flow\Security\Aspect\PolicyEnforcementAspect_Original::enforcePolicy(TYPO3\Flow\Aop\JoinPoint)

Packages/Framework/TYPO3.Flow/Classes/TYPO3/Flow/Aop/Advice/AroundAdvice.php:
00033:         $adviceObject = $this->objectManager->get($this->aspectObjectName);
00034:         $methodName = $this->adviceMethodName;
00035:         return $adviceObject->$methodName($joinPoint);
00036:     }
00037: }

35 TYPO3\Flow\Aop\Advice\AroundAdvice::invoke(TYPO3\Flow\Aop\JoinPoint)

Packages/Framework/TYPO3.Flow/Classes/TYPO3/Flow/Aop/Advice/AdviceChain.php:
00055:         $this->adviceIndex++;
00056:         if ($this->adviceIndex < count($this->advices)) {
00057:             $result = $this->advices[$this->adviceIndex]->invoke($joinPoint);
00058:         } else {
00059:             $result = $joinPoint->getProxy()->Flow_Aop_Proxy_invokeJoinpoint($joinPoint);

34 TYPO3\Flow\Aop\Advice\AdviceChain::proceed(TYPO3\Flow\Aop\JoinPoint)

/data/www/typo3-app/Data/Temporary/Development/Cache/Code/Flow_Object_Classes/TYPO3_TYPO3CR_Domain_Service_Context.php:
00612:                 $adviceChain->rewind();
00613:                 $joinPoint = new \TYPO3\Flow\Aop\JoinPoint($this, 'TYPO3\TYPO3CR\Domain\Service\Context', 'validateWorkspace', $methodArguments, $adviceChain);
00614:                 $result = $adviceChain->proceed($joinPoint);
00615:                 $methodArguments = $joinPoint->getMethodArguments();
00616: 

33 TYPO3\TYPO3CR\Domain\Service\Context::validateWorkspace(TYPO3\TYPO3CR\Domain\Model\Workspace)

/data/www/typo3-app/Data/Temporary/Development/Cache/Code/Flow_Object_Classes/TYPO3_TYPO3CR_Domain_Service_Context.php:
00160: 
00161:         if ($this->workspace !== null) {
00162:             $this->validateWorkspace($this->workspace);
00163:         }
00164: 

32 TYPO3\TYPO3CR\Domain\Service\Context_Original::getWorkspace()

/data/www/typo3-app/Data/Temporary/Development/Cache/Code/Flow_Object_Classes/TYPO3_TYPO3CR_Domain_Service_Context.php:
00268:             return $node;
00269:         }
00270:         $nodeData = $this->nodeDataRepository->findOneByIdentifier($identifier, $this->getWorkspace(), $this->dimensions);
00271:         if ($nodeData !== null) {
00272:             $node = $this->nodeFactory->createFromNodeData($nodeData, $this);

31 TYPO3\TYPO3CR\Domain\Service\Context_Original::getNodeByIdentifier("a51b1e3a-273d-4985-903a-523e34734613")

/data/www/typo3-app/Data/Temporary/Development/Cache/Code/Flow_Object_Classes/Flowpack_SimpleSearch_ContentRepositoryAdaptor_Indexer_NodeIndexer.php:
00175:   } else {
00176:    $context = $this->contextFactory->create(array('workspaceName' => $workspaceName));
00177:    $node = $context->getNodeByIdentifier($nodeIdentifier);
00178:    if ($node !== NULL) {
00179:     $this->indexNode($node, NULL, FALSE);

30 Flowpack\SimpleSearch\ContentRepositoryAdaptor\Indexer\NodeIndexer_Original::indexNodeInWorkspace("a51b1e3a-273d-4985-903a-523e34734613", "user-admin")

/data/www/typo3-app/Data/Temporary/Development/Cache/Code/Flow_Object_Classes/Flowpack_SimpleSearch_ContentRepositoryAdaptor_Indexer_NodeIndexer.php:
00156: 
00157:   foreach ($this->workspaceRepository->findAll() as $workspace) {
00158:    $this->indexNodeInWorkspace($nodeIdentifier, $workspace->getName());
00159:   }
00160:  }

29 Flowpack\SimpleSearch\ContentRepositoryAdaptor\Indexer\NodeIndexer_Original::indexAllNodeVariants(TYPO3\TYPO3CR\Domain\Model\Node)

/data/www/typo3-app/Data/Temporary/Development/Cache/Code/Flow_Object_Classes/Flowpack_SimpleSearch_ContentRepositoryAdaptor_Indexer_NodeIndexer.php:
00096:  public function indexNode(NodeInterface $node, $targetWorkspaceName = NULL, $indexVariants = TRUE) {
00097:   if ($indexVariants === TRUE) {
00098:    $this->indexAllNodeVariants($node);
00099:    return;
00100:   }

28 Flowpack\SimpleSearch\ContentRepositoryAdaptor\Indexer\NodeIndexer_Original::indexNode(TYPO3\TYPO3CR\Domain\Model\Node, "live")

27 call_user_func_array(array|2|, array|2|)

Packages/Framework/TYPO3.Flow/Classes/TYPO3/Flow/Object/DependencyInjection/DependencyProxy.php:
00097:     public function __call($methodName, array $arguments)
00098:     {
00099:         return call_user_func_array(array($this->_activateDependency(), $methodName), $arguments);
00100:     }
00101: }

26 TYPO3\Flow\Object\DependencyInjection\DependencyProxy::__call("indexNode", array|2|)

........

Neos 7.x compatibility

Currently, this package is not compatible with Neos 7.0+. Please update this package so we can upgrade our websites to Neos 7.0.

Property naming collission if property name only differ by case

Example:
Create two document node types, one carries the property email the second eMail.
Saving in backend ends in 500 Error and durring indexing the Warning

Warning: SQLite3::exec(): duplicate column name: email in /var/www/austriacongress.com/gboden.a                                     ustriacongress.com/Data/Temporary/Development/Cache/Code/Flow_Object_Classes/Flowpack_SimpleSea                                     rch_Domain_Service_SqLiteIndex.php line 288

  Type: TYPO3\Flow\Error\Exception
  Code: 1
  File: Packages/Framework/TYPO3.Flow/Classes/TYPO3/Flow/Error/ErrorHandler.php
  Line: 81

is shown.

Using the same case for both property keys works however.

Add option for excluding NodeTypes from indexing

Currently only the ElasticSearch Adaptor gives the possibility to exclude NodeTypes from indexing.

In my opinion the best approach would be to just add the same configuration to the SimpleSearch.

Declaration of [...] must be compatible with [...]

Hello,

after doing compose install, when I try to access the site, I get the following error message:

Fatal error: Declaration of Flowpack\SimpleSearch\ContentRepositoryAdaptor\Indexer\NodeIndexer::indexNode(Neos\ContentRepository\Domain\Model\NodeInterface $node, $targetWorkspaceName = NULL, $indexVariants = true) must be compatible with Neos\ContentRepository\Search\Indexer\NodeIndexerInterface::indexNode(Neos\ContentRepository\Domain\Model\NodeInterface $node, $targetWorkspace = NULL): void in /html/neos/Packages/Application/Flowpack.SimpleSearch.ContentRepositoryAdaptor/Classes/Indexer/NodeIndexer.php on line 14

I could not figure out how to fix it. This is my composer.json:

{
  "name": "name/site",
  "description": "Description",
  "license": "proprietary",
  "support": {
    "email": "[email protected]"
  },
  "config": {
    "vendor-dir": "Packages/Libraries",
    "bin-dir": "bin"
  },
 "require": {
    "neos/neos": "~4.3.0",
    "neos/site-kickstarter": "~4.3.0",
    "neos/seo": "~2.0",
    "neos/setup": "~4.0",
    "neos/redirecthandler-neosadapter": "~2.0",
    "neos/redirecthandler-databasestorage": "~2.0",
    "neos/nodetypes": "~4.3.0",
    "neos/swiftmailer": "^6.0",
    "neos/googleanalytics": "~2.0.2",
    "flowpack/simplesearch": "3.0",
    "ttree/fusion-canrender" : "1.0.1",
    "kaufmanndigital/cookieconsent": "^1.1",
    "moc/notfound": "^3.0",
    "neos/neos-ui": "~1.3.0",
    "neos/neos-ui-compiled": "~1.3.0"
  },
  "require-dev": {
    "flowpack/simplesearch-contentrepositoryadaptor": "2.0.*"
  },
  "suggest": {
    "ext-pdo_sqlite": "For running functional tests out-of-the-box this is required"
  },
  "scripts": {
    "post-update-cmd": "Neos\\Flow\\Composer\\InstallerScripts::postUpdateAndInstall",
    "post-install-cmd": "Neos\\Flow\\Composer\\InstallerScripts::postUpdateAndInstall",
    "post-package-update": "Neos\\Flow\\Composer\\InstallerScripts::postPackageUpdateAndInstall",
    "post-package-install": "Neos\\Flow\\Composer\\InstallerScripts::postPackageUpdateAndInstall"
  }
}

Any ideas on what is causing this, or how to fix it, would be greatly appreciated.

Unable to prepare statement: 5, database is locked

Does anyone run into the same problem?

After:
php56 ./flow nodeindex:build

i got:

Warning: SQLite3::query(): Unable to prepare statement: 5, database is locked in /usr/www/users/c0000001/kunde23/dev/Data/Temporary/Development/Cache/Code/Flow_Object_Classes/Flowpack_SimpleSearch_Domain_Service_SqLiteIndex.php line 278

  Type: TYPO3\Flow\Error\Exception
  Code: 1
  File: Packages/Framework/TYPO3.Flow/Classes/TYPO3/Flow/Error/ErrorHandler.php
  Line: 80

Newly created or edited nodes are getting removed from the index

When i edit or create a node and save, it cannot be found by the search anymore. To make it work again i need to run ./flow nodeindex:build.

After some digging around i noticed that the entries of these nodes are removed in the SQLite db file. The problems occurs with different nodetypes as well.

Flowpack.SimpleSearch.ContentRepositoryAdaptor: dev-master
Neos: 1.2 Beta 2

Support Neos 5

If you try to install this package in a Neos 5 enviroment a fairly old version gets installed. Therefore it's unusable because the package tries to use the very old TYPO3\Flow, etc classes.

ExactMatch operator does not seem to work with properties containing multiple references

Use Case:
There's a nodetype "project" which has a property "categories" of type references. On the category page, i want to list all projects which have the current category in their reference property.
Eel:

    ${Search.query(site).nodeType('My.Vendor:Project').exactMatch('category', node).execute()}

This works when there's only one category attached, if a 'project' has more than one category it will be not listed. Is there any possibility to check if the node is in the references list? Something like:

    ${Search.query(site).nodeType('My.Vendor:Project').isInProperty('category', node).execute()}

Your requirements could not be resolved to an installable set of packages.

Neos 4.0

Hey, i have a problem with your package, i proceeded as follows:

  1. composer require flowpack/simplesearch-contentrepositoryadaptor:2.0.2
  2. composer update

Problem 1
- Conclusion: remove neos/neos 4.0.8
- Conclusion: don't install neos/neos 4.0.8
- Conclusion: don't install neos/neos 4.0.7
- Conclusion: don't install neos/neos 4.0.6
- Conclusion: don't install neos/neos 4.0.5
- Conclusion: don't install neos/neos 4.0.4
- Conclusion: don't install neos/neos 4.0.3
- Conclusion: don't install neos/neos 4.0.2
- Conclusion: don't install neos/neos 4.0.0
- flowpack/simplesearch-contentrepositoryadaptor 2.0.2 requires neos/neos ~3.0 || dev-master -> satisfiable by neos/neos[3.0.x-dev, 3.1.x-dev, 3.2.x-dev, 3.3.x-dev, dev-master].
- flowpack/simplesearch-contentrepositoryadaptor 2.0.x-dev requires neos/neos ~3.0 || dev-master -> satisfiable by neos/neos[3.0.x-dev, 3.1.x-dev, 3.2.x-dev, 3.3.x-dev, dev-master].
- Can only install one of: neos/neos[4.0.x-dev, 3.0.x-dev].
- Can only install one of: neos/neos[4.0.x-dev, 3.1.x-dev].
- Can only install one of: neos/neos[4.0.x-dev, 3.2.x-dev].
- Can only install one of: neos/neos[4.0.x-dev, 3.3.x-dev].
- Can only install one of: neos/neos[dev-master, 4.0.x-dev].
- Installation request for neos/neos ~4.0.0 -> satisfiable by neos/neos[4.0.0, 4.0.2, 4.0.3, 4.0.4, 4.0.5, 4.0.6, 4.0.7, 4.0.8, 4.0.x-dev].
- Installation request for flowpack/simplesearch-contentrepositoryadaptor ~2.0.2 -> satisfiable by flowpack/simplesearch-contentrepositoryadaptor[2.0.2, 2.0.x-dev].

Here is my composer.json
https://gist.github.com/mfMeds/5e13cc40ee2799b956445bc5acdcf391

Best Regards!

Remove dependency to Neos

Hi you guys,

by now I had several occasions where I wanted to use SimpleSearch in use cases where Neos is not involved.

Since adding SimpleSearch to your dependencies now means that you're getting Neos and the Media Package etc. pp. - which is certainly not needed for this - wouldn't it be possible to just drop the composer dependency?

I had a quick look around this repository and don't see any reason to keep Neos as a dependency. When I'd had a good test case, I would initiate a pull request, but I think you guys have deeper insight to decide this more quickly.

Thanks!

Hide Nodes from Results / add notEquals() Filter

Im looking for a way to hide nodes with metaRobotsNoindex TRUE from search results.
A notEquals() Filter (like in ElasticSearch.ContentRepositoryAdaptor) would be great!
${Search.query(site).nodeType('Neos.Neos:Document').notEquals('metaRobotsNoindex', TRUE)

Old supertype syntax used

It should be

'Flowpack.SimpleSearch.ContentRepositoryAdaptor:Search':
  superTypes:
    'TYPO3.Neos:Content': true

PHP 7.4 Compatibility => Update dependencies

Currently this package requires neos/content-repository-search version ^3.0.
This version uses curly braces for accessing an array in one spot, which are deprecated in PHP 7.4 and result in a big warning in Neos.

There is a more recent version of neos/content-repository-search, ^4.0, which has corrected that.

To fix this issue, we only need to update the require statement in package.json.

accessDeniedException

after fresh insalation and send search request I've got:

#1216919280: You are not allowed to perform this action.
More information

TYPO3\Flow\Security\Exception\AccessDeniedException thrown in file
/Users/lukaszjurys/www/neos_dev/Data/Temporary/Development/Cache/Code/Flow_Object_Classes/TYPO3_Flow_Security_Authorization_Interceptor_AccessDeny.php in line 30.
Reference code: 20150617020135ae0226

composer:

typo3/neos": "1.2.*",
        "typo3/neos-nodetypes": "1.2.*",
        "typo3/neos-kickstarter": "1.2.*",
        "doctrine/migrations": "1.0.0-alpha3",
        "typo3/typo3cr": "1.2.*",
        "typo3/typoscript": "1.2.*",
        "typo3/media": "1.2.*",
        "typo3/flow": "2.3.*",
        "typo3/fluid": "2.3.*",
        "typo3/eel": "2.3.*",
        "typo3/party": "2.3.*",
        "typo3/kickstart": "2.3.*",
        "ttree/plugin-seo": "dev-master",
        "lelesys/news": "1.2.*@dev",
        "m12/neos-nodetype-slickcarousel": "dev-master",
        "weissheiten/neos-bootstrap": "dev-master",
        "m12/neos-plugin-dbexport": "0.1.0",
        "swiftmailer/swiftmailer": "5.4.1",
        "symfony/process": "^2.7",
        "flowpack/simplesearch": "^1.2",
        "flowpack/simplesearch-contentrepositoryadaptor": "^1.2" 

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.