簡體   English   中英

Rails,Tire,Elasticsearch:如何使用同義詞?

[英]Rails, Tire, Elasticsearch: how to use synonyms?

我不知道如何通過Tire gem使用Elasticsearch的同義詞/復數。 我有一個要下載的同義詞文件(足夠的英文版)嗎? 無論我是否使用輪胎,在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

我在文檔中找不到任何內容

謝謝!

我想你的意思是彈性搜索的同義詞 - 標記過濾器: 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" }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM