Przeglądaj źródła

正文搜索支持段落号,页码

visuddhinanda 3 lat temu
rodzic
commit
a577504da0
1 zmienionych plików z 26 dodań i 6 usunięć
  1. 26 6
      app/Http/Controllers/SearchController.php

+ 26 - 6
app/Http/Controllers/SearchController.php

@@ -27,7 +27,13 @@ class SearchController extends Controller
     public function index(Request $request){
         switch ($request->get('view','pali')) {
             case 'pali':
-                return $this->pali($request);
+                $pageHead = ['M','P','T','V','O'];
+                $key = $request->get('key');
+                if(substr($key,0,4) === 'para' || in_array(substr($key,0,1),$pageHead)){
+                    return $this->page($request);
+                }else{
+                    return $this->pali($request);
+                }
                 break;
             case 'page':
                 return $this->page($request);
@@ -158,8 +164,15 @@ class SearchController extends Controller
         }
 
 //type='.ctl.' and word like 'P%038'
-        $table = WbwTemplate::where('type','.ctl.')
-                            ->where('word','like',$request->get('type')."%0".$request->get('key'));
+        $key = $request->get('key');
+        $searchKey = '';
+        $table = WbwTemplate::where('type','.ctl.');
+        if(is_numeric($key)){
+            $table = $table->where('word','like',$request->get('type')."%0".$key);
+        }else{
+            $table = $table->where('word',$key);
+        }
+
         if(count($bookId)>0){
             $table = $table->whereIn('pcd_book_id',$bookId);
         }
@@ -190,9 +203,16 @@ class SearchController extends Controller
         switch ($request->get('view','pali')) {
             case 'pali':
                 # code...
-                $queryWhere = $this->getQueryWhere($key,$request->get('match','case'));
-                $query = "SELECT pcd_book_id, count(*) as co FROM fts_texts WHERE {$queryWhere['query']} {$queryBookId} GROUP BY pcd_book_id ORDER BY co DESC;";
-                $result = DB::select($query, $queryWhere['param']);
+                $pageHead = ['M','P','T','V','O'];
+                if(substr($key,0,4) === 'para' || in_array(substr($key,0,1),$pageHead)){
+                    $queryWhere = "type='.ctl.' AND word = ?";
+                    $query = "SELECT pcd_book_id, count(*) as co FROM wbw_templates WHERE {$queryWhere} {$queryBookId} GROUP BY pcd_book_id ORDER BY co DESC;";
+                    $result = DB::select($query, [$key]);
+                }else{
+                    $queryWhere = $this->getQueryWhere($key,$request->get('match','case'));
+                    $query = "SELECT pcd_book_id, count(*) as co FROM fts_texts WHERE {$queryWhere['query']} {$queryBookId} GROUP BY pcd_book_id ORDER BY co DESC;";
+                    $result = DB::select($query, $queryWhere['param']);
+                }
                 break;
             case 'page';
                 $type = $request->get('type','P');