首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Tire库进行词干提取

使用Tire库进行词干提取
EN

Stack Overflow用户
提问于 2013-05-13 15:54:55
回答 2查看 238关注 0票数 1

我正在使用ElasticSearch和Tire执行一些基本的搜索功能,但是snowball词干分析器的基本配置让我摸不着头脑。我基本上遵循了GitHub页面中的代码示例:https://github.com/karmi/tire

这是一个Ruby示例文件(Ruby 1.9.3,Tire 1.8.25):

代码语言:javascript
复制
require 'tire'

Tire.index 'videos' do
  delete
  create :mappings => {
  :video => {
      :properties => {
        :code                => { :type => 'string' },
        :description         => { :type => 'string', :analyzer => 'snowball' }
      }
  }
}
end

videos = [
    { :code => '1', :description => "some fight video" },
    { :code => '2', :description => "a fighting video" }
]

Tire.index 'videos' do
    import videos
    refresh
end

s = Tire.search 'videos' do
   query do
      string 'description:fight'
   end
end

s.results.each do |document|
   puts "* #{document.code} - #{document.description}"
end

我本以为这会在比赛中产生两个记录,因为格斗和格斗有相同的词干。但是,它只返回第一条记录:

代码语言:javascript
复制
* 1 - some fight video

这表明使用的是默认分析器,而不是我正在配置的分析器。

我知道在每个问题(ElasticSearch mapping doesn't work)的查询字符串中传递了实际的字段,并且已经成功地运行了这段代码,因此我的ElasticSearch安装看起来很好。

我需要修改什么才能让Tire返回这个查询的两条记录(例如,我如何在这里进行词干分析)?

EN

回答 2

Stack Overflow用户

发布于 2013-05-21 05:16:18

我本以为这会在比赛中产生两个记录,因为

和fighting有相同的词干。但是,它只返回第一条记录:

正确的。'fight‘的词根是'fight’,返回的结果中只有"fight“。战斗将做完全相同的事情,除非你设置你的搜索索引匹配。

如果你想让它按照你所描述的方式运行,你可能会想让你的默认索引使用一个边缘ngram分析器,这样"fight“也会匹配"fighting”并返回它。这也会有,我认为是理想的效果,如果你也查询“打架”的话,就会同时匹配“打架”和“打架”。

票数 0
EN

Stack Overflow用户

发布于 2013-06-11 15:21:10

好吧,事实证明这是我的一个非常简单的错误。我忽略了在定义视频的散列中包含"type“。替换

代码语言:javascript
复制
videos = [
    { :code => '1', :description => "some fight video" },
    { :code => '2', :description => "a fighting video" }
]

使用

代码语言:javascript
复制
videos = [
    { :type => 'video', :code => '1', :description => "some fight video" },
    { :type => 'video', :code => '2', :description => "a fighting video" }
]

已修复此问题。

代码更改的结果是将正确的分析器应用于description字段。以前,雪球分析器将仅应用于搜索查询,这将导致搜索查询被词干处理。如果我在查询语句中输入"description: fighting“,它仍然会匹配第一个结果--”一些格斗视频“,而不是”一个格斗视频“。这让我意识到这些记录没有被正确分析。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16517210

复制
相关文章

相似问题

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