- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在将 solr 实现到 Rails 应用程序中,特别是与成分搜索相关的应用程序。如果我对“beef”或“chicken”等简单名词进行部分单词匹配,我可以输入从 1 到完整字符串的任意数量的字母,它会找到包含这些单词的成分。当我有一个带有后缀的单词时,例如“eggs”(-s)、“baked”(-ed) 或“baking”,问题就出现了(-ing)。
我们以“烘焙”为例。我可以搜索“b”、“ba”或“bak”以获取包含“baking”一词的任何结果。如果我搜索“baki”、“bakin”或“baking”,则会找不到任何结果。
我想知道我的 Rails 搜索代码是否有问题,或者我是否需要编辑 schema.xml
文件中的某些内容。我的模式是 sunspot 提供的默认模式。我的模型和搜索代码如下所示。
class Ingredient < ActiveRecord::Base
validates :name, presence: true, uniqueness: true
searchable do
text :name
end
def self.search_by_partial_name(name)
keywords = name.to_s.split(/\s+/).delete_if(&:blank?)
search = Sunspot.search(self) do
text_fields do
keywords.each do |keyword|
with(:name).starting_with(keyword)
end
end
end
search.results
end
end
搜索:
Ingredient.search_by_partial_name('baki') # => []
Ingredient.search_by_partial_name('bak') # => [<Ingredient "baking powder">,
<Ingredient "baking potato">,
...]
谢谢!
编辑:以下是有关上述两个示例所执行的 solr 查询的日志。
Started GET "/admin/ingredients/search?term=bak" for 127.0.0.1 at 2014-11-23 09:21:01 -0700
Processing by Admin::IngredientsController#search as JSON
Parameters: {"term"=>"bak"}
User Load (0.4ms) SELECT "users".* FROM "users" WHERE "users"."id" = 1 ORDER BY "users"."id" ASC LIMIT 1
SOLR Request (4.9ms) [ path=select parameters={fq: ["type:Ingredient", "name_text:bak*"], start: 0, rows: 30, q: "*:*"} ]
Ingredient Load (0.8ms) SELECT "ingredients".* FROM "ingredients" WHERE "ingredients"."id" IN (9853, 9858, 10099, 10281, 10289, 10295, 10350, 10498, 10507, 10583, 10733, 10787, 11048, 11148, 11395, 11603, 11634, 11676, 11734, 11863, 12031, 12189, 12268, 12399, 13128, 13577, 13830, 13886, 14272, 14366)
Completed 200 OK in 12ms (Views: 1.3ms | ActiveRecord: 1.1ms | Solr: 4.9ms)
Started GET "/admin/ingredients/search?term=baki" for 127.0.0.1 at 2014-11-23 09:21:22 -0700
Processing by Admin::IngredientsController#search as JSON
Parameters: {"term"=>"baki"}
User Load (0.4ms) SELECT "users".* FROM "users" WHERE "users"."id" = 1 ORDER BY "users"."id" ASC LIMIT 1
SOLR Request (4.5ms) [ path=select parameters={fq: ["type:Ingredient", "name_text:baki*"], start: 0, rows: 30, q: "*:*"} ]
Completed 200 OK in 7ms (Views: 0.4ms | ActiveRecord: 0.4ms | Solr: 4.5ms)
最佳答案
在搜索查询末尾添加星号:
Ingredient.search_by_partial_name('baki*')
关于Solr(太阳黑子)在包含后缀时找不到部分单词匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26705292/
我正在将 solr 实现到 Rails 应用程序中,特别是与成分搜索相关的应用程序。如果我对“beef”或“chicken”等简单名词进行部分单词匹配,我可以输入从 1 到完整字符串的任意数量的字母,
我正在使用Sunspot生成很多我的应用程序索引和概述。 在这个应用程序中,我有2个模型,这些模型具有 parent / child 一对多的关系。使用Sunspot I,我可以索引 parent 拥
我正在使用 sunspot。如何运行 LIKE 查询 (LIKE %q%)?我想做这样的事情: @search = Sunspot.search(User) do |q| q.text_fie
鉴于我想找到 20 个相关结果,我将如何提升 any_of (with(:id).any_of(co_author_ids)) 中的第一个条件,以便如果有 20 个结果与所述条件匹配,它将返回而不是尝
我知道这样做是可能的: bod = Time.zone.now.beginning_of_day facet :start_time do row :past do with(
Assets 模型: searchable do text :title text :description time :created_at integer :categor
我在排序时遇到了一系列太阳黑子问题和编码问题。 主要问题是使用带重音的巴西词。例如,对于一组名称为: 阿尔贝托 安娜 玛丽亚 阿尔瓦罗 在调用 order_by 方法后,名字 Álvaro 总是出现在
我正在将太阳黑子搜索引入我的项目。我只通过名称字段搜索就得到了一个 POC。当我引入描述字段并重新索引已售出时,我收到以下错误。 ** Invoke sunspot:reindex (first_ti
我通过 Sunspot 将 Solr 用于 Rails,但我不知道如何返回 30 多个结果? 假设我有这个块用于搜索: posts = Post.search do keywords('somet
articles = Article.search do |s| s.fulltext "Java Script" end 我如何告诉太阳黑子像给我所有与“Java Script”完全匹配的结
我将 Solr 与 Sunspot/dismax 结合使用。是否可以查询非字母字符?即: ~! @# $ % ^ & * ( ) _ + - = [ ] { } |\ 我知道 +/- 必须转义,因为它
我正在按多个标量字段进行范围界定,我希望将范围界定的结果推到搜索结果的顶部,而不排除不符合最喜欢作者标准的结果。 文章拥有并属于许多作者 这行不通,但这是我想要的: favorite_author_i
假设我们有一个由 sunspot/solr/lucene(或任何其他搜索引擎)索引的文章列表。 如何查找与给定文章相似的文章? 是否应该使用恢复工具来完成此操作,例如: http://www.word
我正在尝试让 gems sunspot_rails 和 sunspot_solr 启动并运行。我已经下载了所有最新的 gem,并实现了来自 https://github.com/sunspot/sun
我有一个模型,比如说 Post。它有标签。每个标签都有一个应该反射(reflect)在搜索中的权重。我能否以某种方式存储这些标签并增加每个标签的权重? 例子: 帖子标题是“在外面吃饭”标签是“汉堡”(
如何将 Sunspot search do block 中的通用代码重构为可以从多个地方调用的方法?我怀疑这可能更像是一个 Ruby 元编程问题,而不是一个特定于 Sunspot 的问题,但这里是。
在多个字段中使用 Sunspot/Solr 的方法是什么?它可以很好地处理一个简单的表单,如这个截屏视频中所解释的:http://railscasts.com/episodes/278-search-
我遇到了一个奇怪的问题,我正在寻找您的输入。 我的问题是: 使用 Capistrano 在生产环境中部署我的应用程序后,当我进行 solr 重新索引时,它给了我以下错误: $ bundle exec
我正在尝试将 sunspot 与 Rails 4 一起使用,但遇到了一些问题。当我的 gemfile 中只有 gem 'sunspot_rails', '2.0.0' 时,我收到此错误: Note:
我正在尝试将时间戳字段添加到我的模型中,以便由 Sunspot/Solr 建立索引。 Solr 对此感到窒息并产生一个 NumberFormatException: class Book < Acti
我是一名优秀的程序员,十分优秀!