2015-02-11 76 views
1

这样可以很清楚我有这个字段使用通配符SQL中的文本字段搜索词

Columntobesearch 
    aword1 bword1 
    aword2 bword2 
    aword3 bword4 

现在我想要做的就是使用SQL通配符所以我做了什么搜索这样

%searchbox% 

我放置通配符在我的搜索,但它会搜索什么样的两端就是在球场上时,我搜索“AWORD”的所有字段的显示,但是当我搜索“bword”

的第一个字没有正在显示,请帮助。

这是我的全部代码

$Input=Input::all(); 
    $makethis=Input::flash(); 
    $soptions=Input::get('soptions'); 
    $searchbox=Input::get('searchbox'); 
      $items = Gamefarm::where('roost_hen', '=',Input::get('sex')) 
    ->where($soptions, 'LIKE','%' . $searchbox . '%') 
    ->paginate(12); 
+0

您可以分享代码,您如何进行查询? – 2015-02-11 03:50:02

+0

我编辑了我的问题先生 – 2015-02-11 14:23:12

回答

0

如果你使用MySQL中,你可以试试这个:

<?php 
    $q = Input::get('searchbox'); 
    $results = DB::table('table') 
     ->whereRaw("MATCH(columntobesearch) AGAINST(? IN BOOLEAN MODE)", 
      array($q) 
     )->get(); 

Ofcourse您需要与

准备表全文搜索中迁移文件
DB::statement('ALTER TABLE table ADD FULLTEXT search(columntobesearch)'); 

无论如何,这不是执行FTS的更具扩展性和高效率的方式。 对于可扩展且可靠的全文搜索,我强烈建议您参阅elasticsearch并实施任何Laravel package来完成此任务

+0

不错的答案先生,但我只是不能理解这部分“反对(?在布尔模式)”,什么是在布尔模式意味着什么? – 2015-02-11 14:19:19

+0

我编辑了我的答案先生,我展示了我的完整代码 – 2015-02-11 14:22:52

+0

您可以在此链接中参阅mysql文档以进行全文搜索:http://dev.mysql.com/doc/refman/5.5/en/fulltext-boolean。 html – 2015-02-11 19:25:36