setQuery() public method

Set fieldwise search phrases.
public setQuery ( $query )
$query array A field -> search phrase assignment
Esempio n. 1
0
 /**
  * @covers LucenePlugin
  * @covers SolrSearchRequest
  */
 public function testCallbackRetrieveResults()
 {
     // Test data.
     $testCases = array(array(null => 'test AND query'), array(SUBMISSION_SEARCH_AUTHOR => 'author'), array(SUBMISSION_SEARCH_TITLE => 'title'), array(SUBMISSION_SEARCH_ABSTRACT => 'abstract'), array(SUBMISSION_SEARCH_INDEX_TERMS => 'Nicht index terms'), array(SUBMISSION_SEARCH_GALLEY_FILE => 'full OR text'), array(null => 'test query', SUBMISSION_SEARCH_AUTHOR => 'author', SUBMISSION_SEARCH_TITLE => 'title', SUBMISSION_SEARCH_DISCIPLINE => 'discipline', SUBMISSION_SEARCH_SUBJECT => 'subject', SUBMISSION_SEARCH_TYPE => 'type', SUBMISSION_SEARCH_COVERAGE => 'coverage', SUBMISSION_SEARCH_GALLEY_FILE => 'full text'));
     $expectedResults = array(array('authors|title|abstract|galleyFullText|discipline|subject|type|coverage' => 'test AND query'), array('authors' => 'author'), array('title' => 'title'), array('abstract' => 'abstract'), array('discipline|subject|type|coverage' => 'Nicht index terms'), array('galleyFullText' => 'full OR text'), array('authors|title|abstract|galleyFullText|discipline|subject|type|coverage' => 'test query', 'authors' => 'author', 'title' => 'title', 'discipline' => 'discipline', 'subject' => 'subject', 'type' => 'type', 'coverage' => 'coverage', 'galleyFullText' => 'full text'));
     $journal = new Journal();
     $fromDate = '2000-01-01 00:00:00';
     $hook = 'SubmissionSearch::retrieveResults';
     $totalResults = null;
     $error = null;
     $facetCategories = array('discipline', 'subject', 'type', 'coverage', 'authors');
     foreach ($testCases as $testNum => $testCase) {
         // Build the expected search request.
         $searchRequest = new SolrSearchRequest();
         $searchRequest->setJournal($journal);
         $searchRequest->setFromDate($fromDate);
         $searchRequest->setQuery($expectedResults[$testNum]);
         $searchRequest->setSpellcheck(true);
         $searchRequest->setHighlighting(true);
         // Facets should only be requested for categories that have no
         // active filter.
         $expectedFacetCategories = array_values(array_diff($facetCategories, array_keys($expectedResults[$testNum])));
         $searchRequest->setFacetCategories($expectedFacetCategories);
         // Mock a SolrWebService.
         $webService = $this->getMock('SolrWebService', array('retrieveResults'), array(), '', false);
         // Check whether the Lucene plug-in calls the web service
         // with the right parameters.
         $webService->expects($this->once())->method('retrieveResults')->with($this->equalTo($searchRequest), $this->equalTo($totalResults));
         $this->lucenePlugin->_solrWebService = $webService;
         unset($webService, $searchRequest);
         // Execute the test.
         $params = array($journal, $testCase, $fromDate, null, 1, 25, &$totalResults, &$error);
         $this->lucenePlugin->callbackRetrieveResults($hook, $params);
     }
     // Test an error condition.
     $webService = $this->getMock('SolrWebService', array('retrieveResults', 'getServiceMessage'), array(), '', false);
     $webService->expects($this->once())->method('retrieveResults')->will($this->returnValue(null));
     $webService->expects($this->any())->method('getServiceMessage')->will($this->returnValue('some error message'));
     $originalWebService = $this->lucenePlugin->_solrWebService;
     $this->lucenePlugin->_solrWebService = $webService;
     $params = array($journal, array(null => 'test'), null, null, 1, 25, &$totalResults, &$error);
     $this->assertEquals(array(), $this->lucenePlugin->callbackRetrieveResults($hook, $params));
     $this->assertEquals('some error message ##plugins.generic.lucene.message.techAdminInformed##', $error);
     $this->lucenePlugin->_solrWebService = $originalWebService;
 }
Esempio n. 2
0
 /**
  * @covers SolrWebService::getAutosuggestions()
  */
 public function testGetAutosuggestions()
 {
     // Fake a search request.
     $searchRequest = new SolrSearchRequest();
     $journal = new Journal();
     $journal->setId(2);
     $searchRequest->setJournal($journal);
     $searchRequest->setQuery(array('authors' => 'McAutomatic'));
     // Only the last word should be corrected. This also
     // checks whether suggestions come from different fields.
     self::assertEquals(array('chic (AND wings', 'chic (AND wide'), $this->solrWebService->getAutosuggestions($searchRequest, 'query', 'chic (AND wi', SOLR_AUTOSUGGEST_SUGGESTER));
     // The faceting component will return no suggestions for
     // the same query as it wouldn't return any results.
     self::assertEquals(array(), $this->solrWebService->getAutosuggestions($searchRequest, 'query', 'chic (AND wi', SOLR_AUTOSUGGEST_FACETING));
     // Even when we correct the first word, we'll not get
     // results due to the fact that there's no such article
     // with the author given in the search request.
     self::assertEquals(array(), $this->solrWebService->getAutosuggestions($searchRequest, 'query', 'chicken (AND wi', SOLR_AUTOSUGGEST_FACETING));
     // We start to get a result from the faceting component
     // when we enter another author. But the result will only
     // include suggestions that actually return something.
     $searchRequest->setQuery(array('authors' => 'Peter Poultry'));
     self::assertEquals(array('chicken (AND wings'), $this->solrWebService->getAutosuggestions($searchRequest, 'query', 'chicken (AND wi', SOLR_AUTOSUGGEST_FACETING));
     $searchRequest->setQuery(array());
     foreach (array(SOLR_AUTOSUGGEST_FACETING, SOLR_AUTOSUGGEST_SUGGESTER) as $autosuggestType) {
         // When the last word cannot be improved then
         // return no results.
         self::assertEquals(array(), $this->solrWebService->getAutosuggestions($searchRequest, 'query', 'chicken AND dslgkhsi', $autosuggestType));
         // Check whether results for index term suggestions
         // come from different sources (but not all sources).
         // The following search should not return 'lucene' for
         // example, which would come from a non-index field.
         self::assertEquals(array('lunch', 'lunchtime'), $this->solrWebService->getAutosuggestions($searchRequest, 'indexTerms', 'lu', $autosuggestType));
     }
     // Check one of the "simple" search fields, e.g. authors.
     // This also shows that the suggester will propose terms
     // from other journals. The author "tester" does not appear
     // in the journal chosen for the search request above.
     self::assertEquals(array('tester'), $this->solrWebService->getAutosuggestions($searchRequest, 'authors', 'tes', SOLR_AUTOSUGGEST_SUGGESTER));
     // In the case of the faceting component this should not return
     // any result as the author comes from a different journal.
     self::assertEquals(array(), $this->solrWebService->getAutosuggestions($searchRequest, 'authors', 'tes', SOLR_AUTOSUGGEST_FACETING));
     // This changes when we look for author names that
     // exist in the journal.
     self::assertEquals(array('author', 'authorname'), $this->solrWebService->getAutosuggestions($searchRequest, 'authors', 'au', SOLR_AUTOSUGGEST_FACETING));
 }