¿Qué implementación de una búsqueda basada en texto para una aplicación Cakephp que utiliza una base de datos MySQL es "mejor"?Cakephp Search for MySQL
Respuesta
siempre tendía a hacer un modelo 'Buscar', 'SearchesController' y puntos de vista, a continuación, escribir mi propio script personalizado para buscar mi base de datos usando,
$this->Search->query("SELECT * FROM table WHERE condition 1 AND condition 2");
No estoy al tanto de cualquier "mejor" de búsqueda , pero bien puede haber componentes y complementos que hagan algo como esto para ti. Mejor para comprobar la panadería http://bakery.cakephp.org/
Sphinx es uno de los más poderosos motores de búsqueda de texto de SQL - http://sphinxsearch.com/
Hay un comportamiento CakePHP redactado en la panadería: http://bakery.cakephp.org/articles/view/sphinx-behavior
Lo que hay que destacar es que Sphinx tiene varios componentes y algunos necesitan ejecutarse como daemons en su máquina (similar a ejecutar procesos apache o mysql). También necesita "indexar" su base de datos de vez en cuando para mantener los resultados actualizados. Puede ser desalentador configurarlo al principio, pero definitivamente vale la pena si tienes muchos registros y grandes fragmentos de texto para buscar.
Cómo he implementado Buscar Mensajes:
El código de búsqueda:
<?php
echo $form->create('Deal',array('action' => 'search'));
echo $form->input('Deal.search');
echo $form->end('Search');
?>
en el controlador, puso la siguiente función de Búsqueda:
function search()
{
if (!empty($this->data)) {
$searchstr = $this->data['Post']['search'];
$this->set('searchstring', $this->data['Post']['search']);
$conditions = array(
'conditions' => array(
'or' => array(
"Post.title LIKE" => "%$searchstr%",
"Post.description LIKE" => "%$searchstr%"
)
)
);
$this->set('posts', $this->Post->find('all', $conditions));
}
}
El código de la vista:
<?php foreach ($posts as $post): ?>
<tr>
<td><?php echo $post['Post']['id']; ?></td>
<td>
<?php echo
$html->link($post['Post']['title'],'/posts/view/'.$post['Post']['id']);?>
</td>
<td><?php echo $post['Post']['created']; ?></td>
</tr>
<?php endforeach; ?>
Puede que no sea el mejor/elegante, pero funciona bien para consultas simples.
- 1. PHP MySQL Search Suggestions
- 2. Good DB Migrations for CakePHP?
- 3. Python dictionary - binary search for a key?
- 4. PHP MySQL Search And Order By Relevancy
- 5. mySQL show database for user
- 6. Proximity Search
- 7. Mysql Search - InnoDB y transacciones vs MyISAM para búsqueda FULLTEXT
- 8. MySQL Connector for .NET - ¿REALMENTE es maduro?
- 9. TreeView search
- 10. Sphinx PHP search
- 11. Text Search for Rails 3 en Heroku - Texticle vs acts_as_tsearch vs acts_as_indexed
- 12. Breadth First Search - Java
- 13. Cómo utilizar SIMILARES O operador utilizando CakePHP y MySQL
- 14. Mínimo y máximo de un campo en cakephp y mysql
- 15. ¿Envuelve automáticamente I-search?
- 16. Elastic Search y "subconsultas"
- 17. IndexedDB Fuzzy Search
- 18. stackoverflow search api
- 19. Mercurial repo search
- 20. Global Search En Android
- 21. Ruby Amazon book search
- 22. JavaScript fuzzy search
- 23. Google Analytics Site Search
- 24. Rails Search Plugins & Solutions
- 25. SVN Repository Search
- 26. Hibernate Search o Compass
- 27. oracle blob text search
- 28. Alfresco Solr Custom Search
- 29. Autocompletar utilizando Hibernate Search
- 30. JavaScript Boolean Search Query Builder Interface Library?
A menos que tenga necesidades de búsqueda complejas, esta es la mejor ruta para tomar. –