SolrSearchRequest::addQueryFromKeywords PHP Method

addQueryFromKeywords() public method

Configure the search request from a keywords array as required by SubmissionSearch::retrieveResults()
public addQueryFromKeywords ( $keywords )
$keywords array See SubmissionSearch::retrieveResults()
    function addQueryFromKeywords($keywords)
    {
        // Get a mapping of OJS search fields bitmaps to index fields.
        $articleSearch = new ArticleSearch();
        $indexFieldMap = $articleSearch->getIndexFieldMap();
        // The keywords list is indexed with a search field bitmap.
        foreach ($keywords as $searchFieldBitmap => $searchPhrase) {
            // Translate the search field from OJS to solr nomenclature.
            if (empty($searchFieldBitmap)) {
                // An empty search field means "all fields".
                $solrFields = array_values($indexFieldMap);
            } else {
                $solrFields = array();
                foreach ($indexFieldMap as $ojsField => $solrField) {
                    // The search field bitmap may stand for
                    // several actual index fields (e.g. the index terms
                    // field).
                    if ($searchFieldBitmap & $ojsField) {
                        $solrFields[] = $solrField;
                    }
                }
            }
            $solrFieldString = implode('|', $solrFields);
            $this->addQueryFieldPhrase($solrFieldString, $searchPhrase);
        }
    }

Usage Example

示例#1
0
 /**
  * AJAX request for search query auto-completion.
  * @param $args array
  * @param $request Request
  * @return JSON string
  */
 function queryAutocomplete($args, $request)
 {
     $this->validate(null, $request);
     // Check whether auto-suggest is enabled.
     $suggestionList = array();
     $lucenePlugin = $this->_getLucenePlugin();
     $enabled = (bool) $lucenePlugin->getSetting(0, 'autosuggest');
     if ($enabled) {
         // Retrieve search criteria from the user input.
         $articleSearch = new ArticleSearch();
         $searchFilters = $articleSearch->getSearchFilters($request);
         // Get the autosuggest input and remove it from
         // the filter array.
         $autosuggestField = $request->getUserVar('searchField');
         $userInput = $searchFilters[$autosuggestField];
         if (isset($searchFilters[$autosuggestField])) {
             unset($searchFilters[$autosuggestField]);
         }
         // Instantiate a search request.
         $searchRequest = new SolrSearchRequest();
         $searchRequest->setJournal($searchFilters['searchJournal']);
         $searchRequest->setFromDate($searchFilters['fromDate']);
         $searchRequest->setToDate($searchFilters['toDate']);
         $keywords = $articleSearch->getKeywordsFromSearchFilters($searchFilters);
         $searchRequest->addQueryFromKeywords($keywords);
         // Get the web service.
         $solrWebService = $lucenePlugin->getSolrWebService();
         /* @var $solrWebService SolrWebService */
         $suggestions = $solrWebService->getAutosuggestions($searchRequest, $autosuggestField, $userInput, (int) $lucenePlugin->getSetting(0, 'autosuggestType'));
         // Prepare a suggestion list as understood by the
         // autocomplete JS handler.
         foreach ($suggestions as $suggestion) {
             $suggestionList[] = array('label' => $suggestion, 'value' => $suggestion);
         }
     }
     // Return the suggestions as JSON message.
     $json = new JSONMessage(true, $suggestionList);
     return $json->getString();
 }
All Usage Examples Of SolrSearchRequest::addQueryFromKeywords