本文整理汇总了PHP中Zend_Search_Lucene_Search_QueryParser::setDefaultOperator方法的典型用法代码示例。如果您正苦于以下问题:PHP Zend_Search_Lucene_Search_QueryParser::setDefaultOperator方法的具体用法?PHP Zend_Search_Lucene_Search_QueryParser::setDefaultOperator怎么用?PHP Zend_Search_Lucene_Search_QueryParser::setDefaultOperator使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Zend_Search_Lucene_Search_QueryParser
的用法示例。
在下文中一共展示了Zend_Search_Lucene_Search_QueryParser::setDefaultOperator方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: search
function search()
{
if (!empty($this->data['Tutorial'])) {
// convert POST to Cake named params (it's prettier than GET)
$this->redirect(array_merge($this->params['named'], $this->data['Tutorial']));
}
// default to boolean AND searching
Zend_Search_Lucene_Search_QueryParser::setDefaultOperator(Zend_Search_Lucene_Search_QueryParser::B_AND);
$query = '';
// Are there any parameters besides page?
$named_params = array_diff_key($this->params['named'], array('page' => ''));
if (!empty($named_params)) {
// sanitize with exceptions for Zend Lucene query language. (Do the exceptions introduce a vulnerability?
// Can Zend Lucene validate a query ahead of time?)
if (isset($this->params['named']['term'])) {
// $query = Sanitize::paranoid($this->params['named']['term'],
// array(' ', '"', "'", ':', '?', '*', '~', '[', ']', '_', '-', '{', '}', '.', '^', '+', '-', '(',
// ')', '&', '|', '!'));
$query = $this->params['named']['term'];
if (!empty($query)) {
// Intercept invalid queries
try {
Zend_Search_Lucene_Search_QueryParser::dontSuppressQueryParsingExceptions();
$parsed_query = Zend_Search_Lucene_Search_QueryParser::parse($query);
} catch (Zend_Search_Lucene_Exception $e) {
// Why can't I catch Zend_Search_Lucene_Search_QueryParserException?
$this->Session->setFlash("We're not sure what you mean. Are your search terms correct?");
$this->redirect(array('action' => 'search', 'term' => Sanitize::paranoid($query, array(" "))));
}
}
} else {
$parsed_query = new Zend_Search_Lucene_Search_Query_Boolean();
}
try {
if (isset($this->params['named']['learning_goal'])) {
$learning_goals = explode('|', $this->params['named']['learning_goal']);
foreach ($learning_goals as $learning_goal) {
if (is_numeric($learning_goal)) {
$learning_goal_term = new Zend_Search_Lucene_Index_Term($learning_goal, 'learning_goal');
$learning_goal_query = new Zend_Search_Lucene_Search_Query_Term($learning_goal_term);
$parsed_query->addSubquery($learning_goal_query, true);
}
}
}
if (isset($this->params['named']['resource_type'])) {
$resource_types = explode('|', $this->params['named']['resource_type']);
foreach ($resource_types as $resource_type) {
if (is_numeric($resource_type)) {
$resource_type_term = new Zend_Search_Lucene_Index_Term($resource_type, 'resource_type');
$resource_type_query = new Zend_Search_Lucene_Search_Query_Term($resource_type_term);
$parsed_query->addSubquery($resource_type_query, true);
}
}
}
if (isset($this->params['named']['keyword'])) {
$keywords = explode('|', $this->params['named']['keyword']);
foreach ($keywords as $keyword) {
if (preg_match('/[A-Za-z0-9\\-]+/', $keyword)) {
// valid UUID?
$keyword_term = new Zend_Search_Lucene_Index_Term($keyword, 'keyword');
$keyword_query = new Zend_Search_Lucene_Search_Query_Term($keyword_term);
$parsed_query->addSubquery($keyword_query, true);
}
}
}
} catch (Zend_Search_Lucene_Exception $e) {
// Why can't I catch Zend_Search_Lucene_Search_QueryParserException?
$this->Session->setFlash("We're not sure what you mean. Are your search terms correct?");
$this->redirect(array('action' => 'search', 'query' => $query));
}
$this->paginate['SearchIndex'] = array('limit' => 10, 'conditions' => array('query' => $parsed_query), 'highlight' => true);
$this->set('tutorials', $this->paginate($this->Tutorial->SearchIndex));
} else {
$this->paginate = array('published', 'limit' => 10, 'order' => 'Tutorial.title ASC', 'conditions' => array('in_index' => true), 'contain' => array('Tag'));
$this->set('tutorials', $this->paginate($this->Tutorial));
}
$this->layout = 'institution';
$results_context = array('model' => '', 'key' => '', 'id' => 0, 'name' => '');
$this->set(compact('results_context'));
$this->set('learningGoals', $this->Tutorial->LearningGoal->find('list'));
$this->set('resourceTypes', $this->Tutorial->ResourceType->find('list'));
}
示例2: getIndex
/**
* Returns the index
*
* @return type
*/
public function getIndex()
{
// var_dump("in get index");
if ($this->index != null) {
return $this->index;
}
Zend_Search_Lucene_Search_QueryParser::setDefaultEncoding('utf-8');
// Important also for GUID Searches (e.g. delete)
Zend_Search_Lucene_Analysis_Analyzer::setDefault(new Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8Num_CaseInsensitive());
Zend_Search_Lucene_Search_QueryParser::setDefaultOperator(Zend_Search_Lucene_Search_QueryParser::B_AND);
$searchIndexPath = Yii::app()->getRuntimePath() . DIRECTORY_SEPARATOR . "searchdb" . DIRECTORY_SEPARATOR;
//var_dump($searchIndexPath);
try {
$index = Zend_Search_Lucene::open($searchIndexPath);
} catch (Exception $ex) {
$index = Zend_Search_Lucene::create($searchIndexPath);
}
$this->index = $index;
return $index;
}
示例3: search
/**
* search function
* searches the index
*
* @param mixed $Model
* @param mixed $query
* @param int $limit
* @param int $page
* @access public
* @return void
*/
function search(&$Model, $query, $limit = 20, $page = 1)
{
// open the index
if (!$this->open_index($Model)) {
return false;
}
try {
// set the default encoding
Zend_Search_Lucene_Search_QueryParser::setDefaultEncoding('utf-8');
// zend search results limiting (We will use the LimitIterator)
// we can use it for some maximum value like 1000 if its likely that there could be more results
Zend_Search_Lucene::setResultSetLimit(1000);
// set the parser default operator to AND
Zend_Search_Lucene_Search_QueryParser::setDefaultOperator(Zend_Search_Lucene_Search_QueryParser::B_AND);
// utf-8 num analyzer
Zend_Search_Lucene_Analysis_Analyzer::setDefault(new Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8Num_CaseInsensitive());
// parse the query
$Query = Zend_Search_Lucene_Search_QueryParser::parse($query);
$Terms = $Query->getQueryTerms();
foreach ($Terms as $Term) {
$this->terms[] = $Term->text;
}
// do the search
$Hits = new ArrayObject($this->Index->find($Query));
} catch (Zend_Search_Lucene_Exception $e) {
$this->log("Zend_Search_Lucene error: " . $e->getMessage(), 'searchable');
}
$this->hits_count = count($Hits);
if (!count($Hits)) {
return null;
}
$Hits = new LimitIterator($Hits->getIterator(), ($page - 1) * $limit, $limit);
$results = array();
foreach ($Hits as $Hit) {
$Document = $Hit->getDocument();
$fields = $Document->getFieldNames();
$result = array();
foreach ($fields as $field) {
$result['Result'][$field] = $Document->{$field};
}
$results[] = $result;
}
return $results;
}
示例4: getLucene
/**
* get the actual lucene instance for the $table
*
* @param string $table
* @return Zend_Search_Lucene_Proxy
*/
protected function getLucene(MingoTable $table)
{
$table_name = $table->getName();
// canary...
if (isset($this->con_db[$table_name])) {
return $this->con_db[$table_name];
}
//if
$ret_instance = null;
$path = array();
$path[] = $this->getField('path');
$path[] = $table_name;
$index_path = join(DIRECTORY_SEPARATOR, $path);
try {
// install the index if it doesn't already exist...
if (is_dir($index_path)) {
$ret_instance = Zend_Search_Lucene::open($index_path);
} else {
$ret_instance = Zend_Search_Lucene::create($index_path);
}
//if/else
} catch (Zend_Search_Lucene_Exception $e) {
clearstatcache();
usleep(10);
$ret_instance = Zend_Search_Lucene::create($index_path);
}
//try/catch
if ($ret_instance !== null) {
// set some values...
/*
Matlin on #phpc turned me onto MaxMergeDocs, MergeFactor, MaxBufferedDocs as probably
the cause for the weird http 500 timeout issues I have when adding to the index
*/
$ret_instance->setMaxMergeDocs((int) $this->max_merged_docs);
$ret_instance->setMaxBufferedDocs((int) $this->max_buffered_docs);
$ret_instance->setMergeFactor((int) $this->merge_factor);
// treat numbers like words, don't worry about case
// see: http://framework.zend.com/manual/en/zend.search.lucene.charset.html 38.6.2....
Zend_Search_Lucene_Analysis_Analyzer::setDefault(new Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8Num_CaseInsensitive());
// default to and, instead of or, when there is no operator...
// http://framework.zend.com/manual/en/zend.search.lucene.query-language.html#zend.search.lucene.query-language.boolean.no-operator
Zend_Search_Lucene_Search_QueryParser::setDefaultOperator(Zend_Search_Lucene_Search_QueryParser::B_AND);
} else {
throw new UnexpectedValueException('could not create Lucene connection');
}
//if/else
$this->con_db[$table_name] = $ret_instance;
return $ret_instance;
}
示例5: get_lucene_query
/**
* Трансформация запроса nc_search_query в запрос Lucene
* @param nc_search_query $query
* @return Zend_Search_Lucene_Search_Query
*/
protected function get_lucene_query(nc_search_query $query)
{
Zend_Search_Lucene_Search_QueryParser::suppressQueryParsingExceptions();
if ($this->get_setting('DefaultBooleanOperator') == 'AND') {
Zend_Search_Lucene_Search_QueryParser::setDefaultOperator(Zend_Search_Lucene_Search_QueryParser::B_AND);
}
$query_string = $query->to_string();
// range search for integers
if (nc_search::should('AllowRangeSearch') && strpos($query_string, ' TO ')) {
preg_match_all("/(\\[|\\{)\\s*(\\d+)\\s+TO\\s+(\\d+)\\s*(\\]|\\})/", $query_string, $matches, PREG_SET_ORDER);
foreach ($matches as $m) {
$query_string = str_replace($m[0], $m[1] . $this->pad_integer($m[2]) . " TO " . $this->pad_integer($m[3]) . $m[4], $query_string);
}
}
// add a time range should it be required
$modified_after = $query->get('modified_after');
$modified_before = $query->get('modified_before');
if ($modified_before || $modified_after) {
$modified_after = $modified_after ? strftime("%Y%m%d%H%M%S", strtotime($modified_after)) : "19000101000000";
$modified_before = $modified_before ? strftime("%Y%m%d%H%M%S", strtotime($modified_before)) : "22000101000000";
$query_string = "({$query_string}) last_modified:[{$modified_after} TO {$modified_before}]";
}
// add area
$area = $query->get('area');
if ($area) {
if (!$area instanceof nc_search_area) {
$area = new nc_search_area($area);
}
$is_boolean = nc_search_util::is_boolean_query($query_string);
$query_string = "({$query_string}) " . ($is_boolean ? " AND " : "+") . $area->get_field_condition($is_boolean);
}
// parse string into Lucene Query
$zend_query = Zend_Search_Lucene_Search_QueryParser::parse($query_string, 'UTF-8');
return $zend_query;
}
示例6: initialize
/**
* @see xfIndex
*/
protected function initialize()
{
$this->setEngine(new xfLuceneEngine(sfConfig::get('sf_data_dir') . '/index'));
$this->getEngine()->open();
Zend_Search_Lucene_Search_QueryParser::setDefaultOperator(Zend_Search_Lucene_Search_QueryParser::B_AND);
}