コード例 #1
0
ファイル: TagService.php プロジェクト: owl/owl
 /**
  * get tag ids by tag names.
  *
  * @param array $tag_names
  * @return array
  */
 public function getTagIdsByTagNames($tag_names)
 {
     $tag_ids = array();
     foreach ($tag_names as $tag_name) {
         $tag_name = trim(mb_convert_kana($tag_name, ""s""));
         $tag_name = str_replace(" ", "", $tag_name);
         if (empty($tag_name)) {
             continue;
         }
         $tag_name = mb_strtolower($tag_name);
         $tag = $this->tagRepo->firstOrCreateByName($tag_name);
         $this->searchService->tagFirstOrCreateByIdAndWords($tag['id'], FtsUtils::toNgram($tag_name));
         $tag_ids[] = (string) $tag['id'];
     }
     return $tag_ids;
 }
コード例 #2
0
ファイル: TagFtsRepository.php プロジェクト: owl/owl
    /**
     * get tags data by string for FullTextSearch.
     *
     * @param string $string
     * @param int $limit
     * @param int $offset
     * @return array
     */
    public function match($str, $limit = 10, $offset = 0)
    {
        $query = <<<__SQL__
            SELECT
              ta.name
            FROM
              tags_fts fts 
            INNER JOIN
              tags ta ON ta.id = fts.tag_id
            WHERE
              fts.words MATCH :match
            ORDER BY
              ta.updated_at DESC
            LIMIT 
              {$limit} 
            OFFSET
              {$offset} 
__SQL__;
        return \DB::select(\DB::raw($query), array('match' => FtsUtils::createMatchWord($str)));
    }
コード例 #3
0
ファイル: ItemFtsRepository.php プロジェクト: owl/owl
    /**
     * matchCount
     *
     * @param string $str
     * @return array
     */
    public function matchCount($str)
    {
        $query = <<<__SQL__
            SELECT
              COUNT(*) as count
            FROM
              items_fts fts 
            INNER JOIN
              items it ON it.id = fts.item_id AND it.published = 2
            WHERE
              fts.words MATCH :match
__SQL__;
        return \DB::select(\DB::raw($query), array('match' => FtsUtils::createMatchWord($str)));
    }