0

저는 타이어 젬을 통해 엘라스토머와 동의어/복수어를 어떻게 사용하는지 잘 모릅니다. 나는 동의어 파일을 다운로드 했습니까 (영어로 충분)? 타이어를 사용하든 사용하지 않든 ES에 설정해야 할 항목이 있습니까? 나는이 문서에서 아무것도 찾을 수 없습니다레일, 타이어, 탄성 검색 : 동의어를 사용하는 방법?

class Story < ActiveRecord::Base 
    include Tire::Model::Search 
    include Tire::Model::Callbacks 
    attr_accessible :author, :content, :title 

    mapping do 
    indexes :id, :index => :not_analyzed 
    indexes :author, :analyzer => 'keyword' 
    indexes :title, :analyzer => 'snowball' 
    indexes :content, :analyzer => 'snowball' 
    end 
end 

class StoriesController < ApplicationController 
    def index 
    if params[:q].present? 
     p = params 
     @stories = Story.search(per_page: 30, page: params[:page], load: true) do 
     query { string p[:q], default_operator: 'AND' } 
     end 
    end 
    end 
end 

...

감사합니다!

+0

당신이 당신의 질문을 명확히 수 있을까? 무엇을 특별히 목표로 삼고 있습니까? – karmi

답변

2

는 난 당신이 elasticsearch의 동의어 - tokenfilter을 의미 같아요 http://www.elasticsearch.org/guide/reference/index-modules/analysis/synonym-tokenfilter/

{ 
    "index" : { 
     "analysis" : { 
      "analyzer" : { 
       "synonym" : { 
        "tokenizer" : "whitespace", 
        "filter" : ["synonym"] 
       } 
      }, 
      "filter" : { 
       "synonym" : { 
        "type" : "synonym", 
        "synonyms_path" : "analysis/synonym.txt" 
       } 
      } 
     } 
    } 
} 

AFAIK 타이어, 이것은 settings 구성에 갈 것 :

settings :analysis => { 
      :filter => { 
       :synonym => { 
       "type"   => "synonym", 
       "synonyms_path" => Rails.root.join("config/analysis/synonym.txt").to_s 
       } 
      }, 
      :analyzer => { 
       :synonym => { 
        "tokenizer" => "lowercase", 
        "filter"  => ["synonym"], 
        "type"   => "custom" } 
      } 
      } do 
    mapping { indexes :the_field, :type => 'string', :analyzer => "synonym" } 
+1

참고 : 반드시 "synonyms_path"키에 .to_s를 추가해야합니다. Rails.root.join (...)은 ElasticSearch에서 인식 할 수없는 경로 이름 객체를 반환하며 오도 된 오류가 발생합니다. 출처 : 2 시간 이상 붙어 있습니다. – orangemoney52

+0

@ orangemoney52 답변을 그에 맞게 수정했습니다. – phoet

관련 문제