标签: tire

弹性搜索中的分析器

我无法理解使用轮胎宝石的弹性搜索中的分析器概念.我实际上是这些搜索概念的新手.有人可以在这里帮我一些参考文章或解释分析器实际上做了什么以及为什么使用它们?

我看到弹性搜索中提到了不同的分析器,如关键字,标准,简单,滚雪球.没有分析仪的知识,我无法弄清楚究竟是什么符合我的需要.

analyzer elasticsearch tire

44
推荐指数
2
解决办法
2万
查看次数

如何在Rails应用程序中测试ElasticSearch(Rspec)

我想知道在使用ElasticSearch和Tire时如何在应用程序中测试搜索.

  • 您如何设置新的ElasticSearch测试实例?有没有办法嘲笑它?

  • 你知道的任何宝石可能对此有所帮助吗?


我发现一些有用的东西:

我发现了一篇很棒的文章回答了我所有的问题:)

http://bitsandbit.es/post/11295134047/unit-testing-with-tire-and-elastic-search#disqus_thread

此外,还有来自轮胎作者卡米的答案.

这也很有用:https://github.com/karmi/tire/wiki/Integration-Testing-Rails-Models-with-Tire

在问之前我无法相信我没有找到这些......

rspec ruby-on-rails ruby-on-rails-3 elasticsearch tire

43
推荐指数
2
解决办法
1万
查看次数

Elasticsearch,Tire和嵌套查询/与ActiveRecord的关联

我正在使用ElasticSearch with Tire来索引和搜索一些ActiveRecord模型,我一直在寻找索引和搜索关联的"正确"方法.我还没有找到对此最好的做法,所以我想问一下是否有人认为他们认为有效的做法.

作为一个示例设置(这是组成但说明了问题),让我们说我们有一本书,有章节.每本书都有一个标题和作者,以及一堆章节.每章都有文字.我们希望将书籍的字段和章节的文本编入索引,以便您可以按作者搜索书籍,也可以搜索包含特定词语的任何书籍.

class Book < ActiveRecord::Base
  include Tire::Model::Search
  include Tire::Model::Callbacks

  has_many :chapters

  mapping do
    indexes :title, :analyzer => 'snowball', :boost => 100
    indexes :author, :analyzer => 'snowball'
    indexes :chapters, type: 'object', properties: {
      chapter_text: { type: 'string', analyzer: 'snowball' }
    }
  end
end

class Chapter < ActiveRecord::Base
  belongs_to :book
end
Run Code Online (Sandbox Code Playgroud)

那么我用以下搜索进行搜索:

s = Book.search do
  query { string query_string }
end
Run Code Online (Sandbox Code Playgroud)

这不起作用,即使看起来索引应该这样做.如果相反我索引:

indexes :chapters, :as => 'chapters.map{|c| c.chapter_text}.join('|'), :analyzer => 'snowball'
Run Code Online (Sandbox Code Playgroud)

这使文本可搜索,但显然它不是一个很好的黑客,它失去了实际的相关对象.我尝试过各种搜索,例如:

s = Book.search do
  query do …
Run Code Online (Sandbox Code Playgroud)

elasticsearch tire

27
推荐指数
1
解决办法
9483
查看次数

检查服务器状态时出现Elasticsearch 503错误

我一直在使用elasticsearch作为我的Rails应用程序的搜索引擎,但由于我无法理解的原因,它已停止正常工作.当向elasticsearch服务器发出curl请求时,我收到503错误.

curl -XGET http://localhost:9200
{
  "ok" : true,
  "status" : 503,
  "name" : "Killpower",
  "version" : {
    "number" : "0.90.3",
    "build_hash" : "5c38d6076448b899d758f29443329571e2522410",
    "build_timestamp" : "2013-08-06T13:18:31Z",
    "build_snapshot" : false,
    "lucene_version" : "4.4"
  },
  "tagline" : "You Know, for Search"
}
Run Code Online (Sandbox Code Playgroud)

我试图通过重新加载elasticsearch服务并安装新版本而没有任何成功来解决问题.

这是我在日志中发现的

[2013-09-03 12:31:45,320][INFO ][node                     ] [Killpower] version[0.90.3], 
pid[4222], build[5c38d60/2013-08-06T13:18:31Z]
[2013-09-03 12:31:45,321][INFO ][node                     ] [Killpower] initializing ...
[2013-09-03 12:31:45,327][INFO ][plugins                  ] [Killpower] loaded [], sites []
[2013-09-03 12:31:47,248][INFO ][node                     ] [Killpower] initialized
[2013-09-03 12:31:47,248][INFO ][node                     ] [Killpower] starting ...
[2013-09-03 …
Run Code Online (Sandbox Code Playgroud)

search curl full-text-search elasticsearch tire

26
推荐指数
1
解决办法
4万
查看次数

ElasticSearch&Tire:使用Mapping和to_indexed_json

在阅读轮胎文档时,我的印象是你应该使用其中之一mappingto_indexed_json方法,因为(我的理解是......)mapping用来喂养to_indexed_json.

问题是,我找到了一些使用它们的教程.为什么?

基本上,我的应用程序现在正在使用to_indexed_json但我无法弄清楚如何设置某些属性的提升值(因此我开始查看映射的原因),我想知道是否使用两者会产生一些冲突.

ruby ruby-on-rails elasticsearch tire

20
推荐指数
1
解决办法
5295
查看次数

多字段,多字,匹配没有query_string

我希望能够将多字搜索与多个字段匹配,其中搜索的每个字都包含在任何字段中,任何组合中.我想避免使用 query_string.

curl -X POST "http://localhost:9200/index/document/1" -d '{"id":1,"firstname":"john","middlename":"clark","lastname":"smith"}'
curl -X POST "http://localhost:9200/index/document/2" -d '{"id":2,"firstname":"john","middlename":"paladini","lastname":"miranda"}'
Run Code Online (Sandbox Code Playgroud)

我想搜索"John Smith"以仅匹配文档1.以下查询执行我需要的操作但我宁愿避免使用query_string以防用户传递"OR","AND"和任何其他高级参数.

curl -X GET 'http://localhost:9200/index/_search?per_page=10&pretty' -d '{
  "query": {
    "query_string": {
      "query": "john smith",
      "default_operator": "AND",
      "fields": [
        "firstname",
        "lastname",
        "middlename"
      ]
    }
  }
}'
Run Code Online (Sandbox Code Playgroud)

lucene search elasticsearch tire

16
推荐指数
1
解决办法
7152
查看次数

无法通过Homebrew启动elasticsearch服务器

所以我通过brew安装了elasticsearch:

$ brew install elasticsearch
Run Code Online (Sandbox Code Playgroud)

然后当我运行elasticsearch服务器时:

elasticsearch -f -D es.config=/usr/local/Cellar/elasticsearch/0.19.3/config/elasticsearch.yml
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

{0.20.4}: Setup Failed ...
- FailedToResolveConfigException[Failed to resolve config path [/usr/local/Cellar/elasticsearch/0.19.3/config/elasticsearch.yml], tried file path [/usr/local/Cellar/elasticsearch/0.19.3/config/elasticsearch.yml], path file [/usr/local/Cellar/elasticsearch/0.20.4/config/usr/local/Cellar/elasticsearch/0.19.3/config/elasticsearch.yml], and classpath]
Run Code Online (Sandbox Code Playgroud)

我怎样才能解决这个问题?任何想法都欢迎.

我这样做了,它对我有用:

获取包裹:

$ curl -k -L -o elasticsearch-0.20.2.tar.gz http://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-0.20.2.tar.gz
Run Code Online (Sandbox Code Playgroud)

Unzipp:

$ tar -zxvf elasticsearch-0.20.2.tar.gz
Run Code Online (Sandbox Code Playgroud)

运行elasticsearch服务器:

./elasticsearch-0.20.2/bin/elasticsearch -f
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails ruby-on-rails-3 elasticsearch tire

13
推荐指数
2
解决办法
1万
查看次数

弹性搜索/轮胎:如何过滤布尔属性?

我想过滤我的类的私有布尔值,所以它只显示非私有的资源,但它不适合我.(我极大地贬低了代码)

mapping do
  indexes :private,  type: "boolean"
  indexes :name, type: "string"
 end 
end

def self.search(params)
    tire.search(load: true, page: params[:page], per_page: 20) do
       query  { string params[:query] } if params[:query].present?
       # So far I've tried...
       # filter :bool, :private => ["false"] 
       # filter :bool,  private: false
    end
end
Run Code Online (Sandbox Code Playgroud)

我该怎么做呢?

ruby ruby-on-rails ruby-on-rails-3 elasticsearch tire

11
推荐指数
1
解决办法
6737
查看次数

索引ElasticSearch中的方法结果(Tire + ActiveRecord)

我正在使用Tire和ActiveRecord为elasticsearch索引数据集.我有一个Artist模型,has_many:images.如何索引返回特定图像的Artist模型的方法?或者参考相关模型的方法?我想要的艺术家结果将包括与艺术家相关的主要图像的路径(原始图像和缩略图).

我试过这个映射:

mapping do
  indexes :id,                  :index    => :not_analyzed
  indexes :name                     
  indexes :url
  indexes :primary_image_original       
  indexes :primary_image_thumbnail
end
Run Code Online (Sandbox Code Playgroud)

引用这些Artist方法:

    def primary_image_original  
        return images.where(:priority => 'primary').first.original
    end

    def primary_image_thumbnail
        return images.where(:priority => 'primary').first.thumbnail_150
    end
Run Code Online (Sandbox Code Playgroud)

这只是忽略了索引方法.基于其他答案,如Elasticsearch,Tire和嵌套查询/与ActiveRecord的关联,我试过这个:

mapping do
  indexes :id,                  :index    => :not_analyzed
  indexes :name 
  indexes :url
  indexes :images do
    indexes :original
    indexes :thumbnail_150
    indexes :priority
  end
end

def to_indexed_json
    to_json(include: { images: { only: [:original, :thumbnail_150, :priority] } } )
end
Run Code Online (Sandbox Code Playgroud)

但这也不会归还我所追求的.我花了几个小时谷歌搜索和阅读elasticsearch和Tire文档,并没有找到这个模式的工作示例.谢谢你的想法!

ruby-on-rails elasticsearch tire

11
推荐指数
1
解决办法
3889
查看次数

Elasticsearch char_filter用空格替换任何字符?

我在我的Ruby on Rails应用程序中使用elasticsearch.我想用char_filter空格替换一些字符.

在elasticsearch教程中,它说:

"mappings" : ["ph=>f", "qu=>q"]
Run Code Online (Sandbox Code Playgroud)

我尝试过以下方法:

"mappings" : ["ph=>\s", "qu=>\s"]
Run Code Online (Sandbox Code Playgroud)

但它似乎不起作用.有什么想法吗?

elasticsearch tire

11
推荐指数
1
解决办法
2910
查看次数