2

젠드에서 전적으로 개발 된 CMS를 사용하여 관리되는 사이트가 있습니다. 이제 검색 기능을 구현해야합니다. 나는 zend에서 검색과 관련된 일을 다할 것입니다. 내가받은 몇몇 제안은 거미를 구현하는 것입니다. 이 사이트는 링크가 많을 것입니다. (계속 추가 될 것입니다). 나는 완전히 혼란스럽고 어디서부터 시작해야할지 모른다. zend_search_lucene이 트릭을 수행합니까?젠드를 사용하여 검색 구현

+0

나는 이것에 많이 의존하고 있습니다 ... 간단한 대답이 나를 많이 도울 수 있습니다 ... – harry

+0

harry, 저는 CMS가 무엇인지 잘 알고 있습니다. TomatoCMS를 사용하고 있습니까? PIMCore? 뭔가가 자랐어요? 사용중인 CMS에 따라 플러그인을 설치할 수도 있습니다. –

+0

@JoshuaKaiser : 자택 재배 중 ... – harry

답변

2

. 콘텐츠가 모두 공개되어 있고 크롤러만으로도 충분하다면 구현하는 가장 쉬운 방법은 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://sphinxsearch.com/

행운을 빕니다!

1

루씬은 내가 그것을 제대로 작동 할 수 없어 내 자신의 검색 논리를 개발,하지만 어쩌면이 도움이 결코 이상한 : 당신은 아마 완전히이 턴키 뭔가를 찾을하지 않을

http://devzone.zend.com/397/roll-your-own-search-engine-with-zend_search_lucene/

+0

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

+1

Zend Lucene 대 Solr Lucene을 비교해 보려면 다음 링크를 참조하십시오. http://stackoverflow.com/questions/2892519/performance-comparision-between-zend-lucene-and-java-lucene –

0

가정에서 재배 한 제품을 사용하고 있기 때문에 적어도 처음에는 가능한 한 단순하게 유지하는 것이 더 나을 것입니다. 또한 제품이 집에서 재배되기 때문에 데이터 구조를 잘 관리해야합니다.

간단한 쿼리 기반 검색은 처음 시작할 때 적합 할 수 있습니다.

나는 간단한 검색 양식을 시작

: 다음

<?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; 
    } 

이것은 검색 기능을 구현하는 간단한 방법이며 대부분의 쿼리 유형에 적용 할 수 있습니다. 스위치 통계와 몇 가지 간단한 데이터베이스 쿼리 및 필요한 거의 모든 정보를 사용할 수 있습니다.

행운을 비네.