파일 태그 검색 실현

7852 단어 RubyRails

개시하다


자신의 포털사이트에서 태그 검색을 실시했기 때문에 미리 복습해 두세요.
http://nishikanako.work

메서드


다음 원본 파일과 같이 덮어쓴 URL의 제목과 설명문에서 선택한 키가 있으면 추출해서 데이터에 저장합니다.
scrape.rb
tag_keyword = ["あおい", "さくら", "きいろいゾウ", "通天閣", "しずく", "こうふく みどりの", "こうふく あかの", "窓の魚", "映画", "i", "イベント", "うつくしい人", "きりこについて", "炎上する君", "白いしるし", "円卓", "漁港の肉子ちゃん", "地下の鳩", "ふくわらい", "インタビュー", "サイン会", "ふる", "舞台", "サラバ", "まく子", "おまじない", "イベント", "劇場", "上映", "まにまに" ,"ご飯ぐるり", "作家", "小説家", "Youtube", "対談"]
      tag_keyword.each do |keyword|
        if (title+description).index(keyword) != nil then
          scrape_tag = ScrapeTag.create(
            :tag        =>  keyword,
            :scrape_id  =>  scrape.id
          )
          p '[Tag] ' + keyword
        end
      end
index 방법은 수조에서 변수obj와 같은 요소를 찾아서 그 위치를 정수로 되돌려줍니다. (첫 번째는 0, 두 번째는 1,...)요소를 찾을 수 없으면 nil로 돌아갑니다.
https://ref.xaio.jp/ruby/classes/array/index
이런 거.
위의 출처를 문장으로 정리하면 키워드의 존재성을 하나하나 검증할 수 있다.여기에 제목과 개요문에 키워드가 있으면 (nil이 아니라면 해당 URL과 연결(scrape.id)을 만들어 데이터로 저장합니다.두 테이블의 링크는 belongs_tohas_many를 이용했다.
문장 요약 아래에 이것을 표시합니다.
views/home.html.rb
<% scrape.scrape_tags.each do |tag| %>
 #bootstrap
  <span class="badge badge-lg badge-primary  ">
  <a href="/?keyword=<%= tag.tag %>" style="color:white"><%= tag.tag %></a>
  </span>
<% end %>
아래 파란색 상자의 단어가 탭으로 표시됩니다.
a 라벨을 링크로 하기 때문에 라벨을 누르면 이 라벨이 있는 글만 표시됩니다.

위에서 말한 바와 같이 controller에서 글의 집합의 실례 변수@scrapes를 조건으로 나누어 정의해야 한다.
sample_controller.rb
def home
    if params[:keyword].present?
      @scrapes = Scrape.where("title LIKE ? or description LIKE ?","%"+params[:keyword]+"%","%"+params[:keyword]+"%").paginate(page: params[:page],:per_page => 21).includes(:scrape_tags)
    else
      @scrapes = Scrape.paginate(page: params[:page],:per_page => 21).includes(:scrape_tags)
    end
end
params를 통해 키워드의 존재성을 확인하고 없는 경우 모든 글을 얻고, 어떤 경우 제목이나 요약에 키워드가 포함된 글만 얻습니다.

끝맺다


이번에는 mecab을 이용하고 싶어요. 예를 들면 명사만 빼고 싶은데 쓸모 있는 단어가 없어서 index 방법을 이용했어요.
해설이 부족한 부분이 있으면 메시지를 남겨주세요.(\")

좋은 웹페이지 즐겨찾기