0
  • avatar
  • ort
  • 04 февраля 2010, 18:49
+1
Решил проблему следующим образом:
в Sphinx.class.php


			if(!is_null($aExtraFilters)){
				foreach($aExtraFilters AS $sAttribName => $sAttribValue){

					$this->oSphinx->SetFilter(
						$sAttribName, 
						(is_array($sAttribValue)) ? $sAttribValue : array($sAttribValue)
					);
				}


меняем на


			if(!is_null($aExtraFilters)){
				foreach($aExtraFilters AS $sAttribName => $sAttribValue){
if($sObjType=="topic" and $sAttribName=="topic_publish"){
					$this->oSphinx->SetFilter(
						$sAttribName, 
						(is_array($sAttribValue)) ? $sAttribValue : array($sAttribValue)
					);
}
elseif($sObjType=="comment" and $sAttribName=="comment_delete"){
					$this->oSphinx->SetFilter(
						$sAttribName, 
						(is_array($sAttribValue)) ? $sAttribValue : array($sAttribValue)
					);
}

					echo $this->oSphinx->GetLastError();
				}
			}


Короче говоря, в первом случае оба атрибута, topic_publish и comment_delete передаются при поиске в каждом индексе. Ессно, тот или иной атрибут существует только в определенном индексе. В 0.9.8 такое прокатывало, в 0.9.9 видимо ужесточили проверку. Я воткнул простую проверку и передаю только нужные атрибуты (не очень красиво, но главное понять в чем проблема)
  • avatar
  • Andex
  • 02 февраля 2010, 14:25