젠드에서 전적으로 개발 된 CMS를 사용하여 관리되는 사이트가 있습니다. 이제 검색 기능을 구현해야합니다. 나는 zend에서 검색과 관련된 일을 다할 것입니다. 내가받은 몇몇 제안은 거미를 구현하는 것입니다. 이 사이트는 링크가 많을 것입니다. (계속 추가 될 것입니다). 나는 완전히 혼란스럽고 어디서부터 시작해야할지 모른다. zend_search_lucene이 트릭을 수행합니까?젠드를 사용하여 검색 구현
답변
. 콘텐츠가 모두 공개되어 있고 크롤러만으로도 충분하다면 구현하는 가장 쉬운 방법은 Google Site Search가 될 수 있습니다.
http://www.google.com/enterprise/search/products_gss.html
이 제공하지 않을 것이라고 검색에서 다른 기능을 얻을 필요가 있다면, 당신은 가능성이 몇 가지 코드를하고 붙어있을 것입니다. Alvar가 게시 한 Zend Lucene 링크가 좋습니다. Zend_Lucene에 대한 추악한 것 중 하나는, 내가 실수하지 않는다면 자바없이 텍스트 기반 lucene 인덱스에 의존한다는 것입니다. 관리가 더 느리고 번거 롭습니다.
보다 강력한 Lucene 기반 접근 방식은 Solr입니다. 자바 기반이며 API로 자체 서비스를 실행합니다. 확장 성이 뛰어나고 PHP Pecl을 통해 커뮤니케이션 할 수 있습니다.
이 http://php.net/manual/en/book.solr.php
를 참조하십시오 또 다른 옵션은 스핑크스이다. 이 검색 엔진은 데이터베이스에 직접 연결되므로 인덱싱이 좀 더 직관적 일 수 있습니다. 당신에게
행운을 빕니다!
루씬은 내가 그것을 제대로 작동 할 수 없어 내 자신의 검색 논리를 개발,하지만 어쩌면이 도움이 결코 이상한 : 당신은 아마 완전히이 턴키 뭔가를 찾을하지 않을
http://devzone.zend.com/397/roll-your-own-search-engine-with-zend_search_lucene/
Alvar FinSoft Soome : 정말 대단합니다. 좋은 참조였습니다. 그러나 예에서 링크 ($는 = 배열 ('http://feeds.feedburner.com/ZendDeveloperZone', \t \t \t \t 'http://www.planet-php.net/rss/', \t 피드 \t \t \t 'http://www.sitepoint.com/blogs/category/php/feed/' \t \t \t \t) )는 하드이다. 제 경우에는 할 수 없습니다. 그래서 대신 할 수있는 일 – harry
Zend Lucene 대 Solr Lucene을 비교해 보려면 다음 링크를 참조하십시오. http://stackoverflow.com/questions/2892519/performance-comparision-between-zend-lucene-and-java-lucene –
가정에서 재배 한 제품을 사용하고 있기 때문에 적어도 처음에는 가능한 한 단순하게 유지하는 것이 더 나을 것입니다. 또한 제품이 집에서 재배되기 때문에 데이터 구조를 잘 관리해야합니다.
간단한 쿼리 기반 검색은 처음 시작할 때 적합 할 수 있습니다.
나는 간단한 검색 양식을 시작: 다음
<?php
class Library_Controller_Action_Helper_Search extends Zend_Controller_Action_Helper_Abstract
{
public function direct($action, $label = null, $placeHolder = null)
{
$form = new Application_Form_Search();
$form->setAction($action);
$form->search->setLabel($label);
$form->query->setAttribs(array('placeholder' => $placeHolder,
'size' => 27,
));
return $form;
}
}
내가 검색 형태에 대한 자리 표시 자 추가 :
<?php
class Application_Form_Search extends Zend_Form
{
public function init() {
$this->setMethod('POST');
$this->setDecorators(array(
array('ViewScript', array(
'viewScript' => '_searchForm.phtml'
))
));
// create new element
$query = $this->createElement('text', 'query');
// element options
$query->setLabel('Search Keywords');
$query->setAttribs(array('placeholder' => 'Title',
'size' => 27,
));
// add the element to the form
$this->addElement($query);
$submit = $this->createElement('submit', 'search');
$submit->setLabel('Search Site');
$submit->setDecorators(array('ViewHelper'));
$this->addElement($submit);
}
}
가 나는 표시하는 간단한 동작 도우미를 구축하고 경로 양식을 내 레이아웃.내가 도우미를 추가 검색 기능을 사용하는 데 필요한 컨트롤러에서 다음
<?php echo $this->layout()->search ?>
PHTML
)는 (predispatch합니다 :public function preDispatch()
{
//assign search action helper to view placeholder
$this->_helper->layout()->search = $this->_helper->search(
'url_for_action', 'Submit button label', 'placeholder text'
);
}
가 나는 적절한 쿼리를 수행하는 간단한 매퍼 방법을 사용하고 일반적으로 I 페이징 어댑터를 반환하십시오.
public function fetchPagedMoviesByTitle($title)
{
$select = $this->getGateway()->select();
$select->where(new Zend_Db_Expr("title LIKE '%$title%'"));
$select->order('title', 'ASC');
//create a new instance of the paginator adapter and return it
$adapter = new Video_Model_Paginator_Video($select);
return $adapter;
}
이것은 검색 기능을 구현하는 간단한 방법이며 대부분의 쿼리 유형에 적용 할 수 있습니다. 스위치 통계와 몇 가지 간단한 데이터베이스 쿼리 및 필요한 거의 모든 정보를 사용할 수 있습니다.
행운을 비네.
나는 이것에 많이 의존하고 있습니다 ... 간단한 대답이 나를 많이 도울 수 있습니다 ... – harry
harry, 저는 CMS가 무엇인지 잘 알고 있습니다. TomatoCMS를 사용하고 있습니까? PIMCore? 뭔가가 자랐어요? 사용중인 CMS에 따라 플러그인을 설치할 수도 있습니다. –
@JoshuaKaiser : 자택 재배 중 ... – harry