Piszę pierwszą aplikację w tym frameworku i jak na ten pierwszy raz wszystko przebiegało zaskakująco dobrze.
Jednak problem pojawił się gdy chciałem stworzyć wyszukiwarkę na stronie i skorzystałem z kohana-search który opiera się o Zend_Search_Lucene.

Operując na gotowych przykładach stworzyłem index

  1. $data = ORM::factory('news')->find_all();
  2. Search::instance()->build_search_index($data);


Bezproblemowo, teraz czas na wyszukiwanie:

  1. public function action_search($q = null) {
  2. $q = $q ? $q : $_POST['q'];
  3. $this->template->title = __('Search: :q', array(':q', HTML::chars($q)));
  4. $news = Search::instance()->find($q);
  5. $this->template->content = View::factory('template/news/search', array('news' => $news));
  6. }


I też działa... ale... okazało się, że w wynikach znajduje się błędnie id newsa...
Wszystkie inne pola jak title, description itd są poprawne a id nie.

A to metoda modelu ORM odpowiedzialna za indeksowanie:


  1. public function get_indexable_fields() {
  2.  
  3. $fields = array();
  4.  
  5. $fields[] = new Search_Field('title', Searchable::TEXT);
  6.  
  7. $fields[] = new Search_Field('description', Searchable::TEXT);
  8. $fields[] = new Search_Field('keywords', Searchable::TEXT);
  9.  
  10. //$fields[] = new Search_Field('content', Searchable::UNSTORED, Searchable::DECODE_HTML);
  11.  
  12. $fields[] = new Search_Field('id', Searchable::UNINDEXED); // ... why?
  13. $fields[] = new Search_Field('date', Searchable::UNINDEXED);
  14. $fields[] = new Search_Field('thumb', Searchable::UNINDEXED);
  15. $fields[] = new Search_Field('comments_count', Searchable::UNINDEXED);
  16.  
  17. return $fields;
  18. }


A w widoku mam normalną pętlę:

  1. foreach($news as $row) {
  2. echo $row->id.' - '. $row->title;
  3. }


I nie mam pojęcia dlaczego tak się dzieje... Z niecierpliwością czekam na odpowiedź. smile.gif