首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails,Tire,Elasticsearch:如何使用同义词?

Rails,Tire,Elasticsearch:如何使用同义词?
EN

Stack Overflow用户
提问于 2013-06-30 21:19:29
回答 1查看 788关注 0票数 0

我不知道如何通过Tire gem在Elasticsearch中使用同义词/复数。我有没有同义词文件可以下载(英文版)?无论我是否使用Tire,都需要在ES中设置一些东西?

代码语言:javascript
复制
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

我在文档里什么也没找到...

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2013-07-01 00:27:02

我猜您指的是elasticsearch的同义词-标记过滤器:http://www.elasticsearch.org/guide/reference/index-modules/analysis/synonym-tokenfilter/

代码语言:javascript
复制
{
    "index" : {
        "analysis" : {
            "analyzer" : {
                "synonym" : {
                    "tokenizer" : "whitespace",
                    "filter" : ["synonym"]
                }
            },
            "filter" : {
                "synonym" : {
                    "type" : "synonym",
                    "synonyms_path" : "analysis/synonym.txt"
                }
            }
        }
    }
}

在轮胎中,这将在settings配置中出现:

代码语言:javascript
复制
  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" }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17390761

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档