簡體   English   中英

Cakephp搜索MySQL

[英]Cakephp Search for MySQL

對使用MySQL數據庫的Cakephp應用程序進行基於文本搜索的哪種實現是“最佳”?

我是如何實現搜索帖子的:

搜索表單代碼:

<?php
echo $form->create('Deal',array('action' => 'search'));
echo $form->input('Deal.search');
echo $form->end('Search');
?> 

在Controller中,輸入以下搜索功能:

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

視圖代碼:

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

可能不是最好的/優雅的,但適用於簡單的查詢。

Sphinx是最強大的SQL文本搜索引擎之一 - http://sphinxsearch.com/

在面包店寫了一個CakePHP行為: http//bakery.cakephp.org/articles/view/sphinx-behavior

需要注意的是,Sphinx有幾個組件,有些需要在你的機器上作為守護進程運行(類似於運行apache或mysql進程)。 此外,您需要經常“索引”您的數據庫以保持結果新鮮。 一開始設置起來可能令人生畏,但如果您有大量的記錄和大塊文本可供搜索,那絕對值得付出努力。

我總是傾向於制作一個'搜索'模型,'SearchesController'和視圖,然后編寫我自己的自定義腳本來搜索我的數據庫,

$this->Search->query("SELECT * FROM table WHERE condition 1 AND condition 2");

我不知道任何“最佳”搜索,但可能有組件和插件將為您做這樣的事情。 最好檢查面包店http://bakery.cakephp.org/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM