RSS   



  可打印版本 | 推薦給朋友 | 訂閱主題 | 收藏主題 | 純文字版  


 


 
主題: [其他] [問題]關鍵字搜尋的程式開發   字型大小:||| 
ROACH
版主
等級: 30等級: 30等級: 30等級: 30等級: 30等級: 30等級: 30等級: 30
減肥中!請勿餵食

十週年紀念徽章(四級)  

 . 積分: 15119
 . 精華: 14
 . 文章: 11767
 . 收花: 140853 支
 . 送花: 6005 支
 . 比例: 0.04
 . 在線: 8870 小時
 . 瀏覽: 85616 頁
 . 註冊: 8211
 . 失蹤: 6
 . 鄉下地方
#1 : 2014-1-28 10:24 AM     只看本作者 引言回覆

問一下像Google或Yahoo的搜尋引擎的關鍵字預載
比方搜尋的時候下面會跑出最接近的搜尋結果

嗯~看來大家只要Twed2k掛掉都會去Google搜尋



這個要怎做呢??下面的框框用jquery寫的對吧
有範例嗎?
那打一個字的時候就去資料庫撈一次嗎?
還是打第一個字的時候就先把符合的關鍵字全部撈到session裡面
第二個關鍵字再從Session抓出來呢?

再問一個問題一般關鍵字搜尋在SQL語法中要怎寫
以前我都是這樣做

SELECT * FROM table where stkey like '%serkey%'.
雖然可以找到關鍵字的資料
但卻不能用『多關鍵字』之類的搜尋方式,還是有什麼其他方式?



[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  訪問主頁  發私人訊息  Blog  快速回覆 新增/修改 爬文標記
daidai
鐵驢友〔中級〕
等級: 5等級: 5


 . 積分: 51
 . 文章: 80
 . 收花: 325 支
 . 送花: 166 支
 . 比例: 0.51
 . 在線: 1631 小時
 . 瀏覽: 13352 頁
 . 註冊: 7325
 . 失蹤: 818
#2 : 2014-1-28 06:39 PM     只看本作者 引言回覆

jquery ui 有 自動完成 套件可以使用
http://jqueryui.com/autocomplete/

jquery 事件
http://api.jquery.com/change/

大概的做法如下,請參考看看囉

$(function() {
        var maxRes = 15;                        // 定義資料最大長度
        var inputOldValue = null;        // 定義欄位舊值
       
        $('#文字輸入欄ID').change(function(){                                // 變更事件
                if ($(this).val() != inputOldValue)                                // 判斷 目前欄位值是否等於舊的值,如果不同就取得新的資料
                {
                        inputOldValue = $(this).val();

                        $("#文字輸入欄ID").autocomplete({
                                source : function(request, response) {        // 資料來源
                                        $.ajax({                                                        // jquery ajax
                                                url : "xxx.php",                                // 處理的網址
                                                dataType : "json",                                // 返回內容的格式
                                                minLength : 1,                                        // 最小長度
                                                data : {                                                // 參數
                                                        max : maxRes,                                // 資料最大長度
                                                        q : $("#文字輸入欄ID").val()// 文字輸入欄值
                                                },
                                                success : function(data) {
                                                        $("#文字輸入欄ID").removeClass("ac_loading");
                                                               
                                                        response($.map(data, function(item) {
                                                                return {
                                                                        label : item.obj_name + " (ID:"
                                                                                        + item.obj_id + ")",
                                                                        value : item.obj_id + ":"
                                                                                        + item.obj_name
                                                                };
                                                        }));
                                                }
                                        });
                                },
                                search : function() {
                                        $(this).addClass('ac_loading');
                                },
                                select : function(event, ui) {
                                        var strArr = ui.item.value.split(':');

                                        $(this).val(strArr[1]);
                                        $("#itemId").val(strArr[0]);

                                        return false;                               
                                },
                                open : function() {
                                        $(this).removeClass("ui-corner-all").addClass("ui-corner-top");
                                },
                                close : function() {
                                        $(this).removeClass("ui-corner-top").addClass("ui-corner-all");
                                }
                        }
                });       
        });
});
Server及瀏覽器端做關鍵字的解析,可以有很多種變化應用@@...

SQL 可以試試
SELECT * FROM table where (stkey like '%serkey%' OR  stkey like '%serkey1%'  OR stkey like '%serkey2%')

[daidai 在  2014-1-28 06:48 PM 作了最後編輯]



[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  發私人訊息  Blog  快速回覆 新增/修改 爬文標記
cnp
銅驢友〔中級〕
等級: 9等級: 9等級: 9


十週年紀念徽章(六級)  

今日心情

 . 積分: 139
 . 文章: 739
 . 收花: 867 支
 . 送花: 2443 支
 . 比例: 2.82
 . 在線: 2437 小時
 . 瀏覽: 15383 頁
 . 註冊: 8172
 . 失蹤: 1173
#3 : 2014-1-31 12:28 AM     只看本作者 引言回覆

感覺Server的Cache要做好, 不然一直query db負擔會蠻重的@@


[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  發私人訊息  Blog  快速回覆 新增/修改 爬文標記
kevenyang
驢baby


今日心情

 . 積分: 0
 . 文章: 6
 . 收花: 0 支
 . 送花: 0 支
 . 比例: 0
 . 在線: 19 小時
 . 瀏覽: 60 頁
 . 註冊: 3955
 . 失蹤: 2412
#4 : 2014-5-19 03:37 PM     只看本作者 引言回覆

SQL的語法真的要多參考別人的才能精進!


[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  發私人訊息  Blog  快速回覆 新增/修改 爬文標記
kevenyang
驢baby


今日心情

 . 積分: 0
 . 文章: 6
 . 收花: 0 支
 . 送花: 0 支
 . 比例: 0
 . 在線: 19 小時
 . 瀏覽: 60 頁
 . 註冊: 3955
 . 失蹤: 2412
#5 : 2014-5-19 03:39 PM     只看本作者 引言回覆

SQL的語法真的要多參考別人的才能精進!


[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  發私人訊息  Blog  快速回覆 新增/修改 爬文標記

   

快速回覆
表情符號

更多 Smilies

字型大小 : |||      [完成後可按 Ctrl+Enter 發佈]        

溫馨提示:本區開放遊客瀏覽。
選項:
關閉 URL 識別    關閉 表情符號    關閉 Discuz! 代碼    使用個人簽名    接收新回覆信件通知
發表時自動複製內容   [立即複製] (IE only)


 



所在時區為 GMT+8, 現在時間是 2024-11-22 03:32 AM
清除 Cookies - 連絡我們 - TWed2k © 2001-2046 - 純文字版 - 說明
Discuz! 0.1 | Processed in 0.036900 second(s), 8 queries , Qzip disabled