- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我有 5 部电影片名:
我想实现一个具有这种预期行为的自动完成搜索字段:
这个用例似乎很明显,而且肯定被许多人使用过,但我就是无法让它正常工作,而且我似乎找不到任何答案或文档来提供帮助。这是我当前的模型:
class Film < Media
include Tire::Model::Search
include Tire::Model::Callbacks
settings :analysis => {
:filter => {
:title_ngram => {
"type" => "edgeNGram",
"min_gram" => 2,
"max_gram" => 8,
"side" => "front" }
},
:analyzer => {
:title_analyzer => {
"tokenizer" => "lowercase",
"filter" => ["title_ngram"],
"type" => "custom" }
}
} do
mapping do
indexes :title, :type => 'string', :analyzer => 'title_analyzer'
indexes :int_english_title, :type => 'string', :analyzer => 'title_analyzer'
end
end
end
以及如何在我的 search_controller 中处理查询:
search = Tire.search ['books', 'films', 'shows'], :load => true, :page => 1, :per_page => 10 do |s|
s.query do |query|
query.string "title:#{params[:search]}"
end
end
@results = search.results
这会产生一些奇怪的行为:
最佳答案
我认为您可以使用 match
实现您想要的效果查询设置为 type:"phrase_prefix"
。大多数(但不是全部)示例都可以使用。
使用 Ngrams,您可以更好地控制流程,但它们的召回率相当高(它们通常会返回比您想要的更多的数据),您必须与之抗争。这就是您使用多个查询词(“Sans so”)观察到的“奇怪行为”,因为它们是作为 Sans OR so
查询有效执行的。
尝试使用 default_operator: "AND"
选项(参见轮胎的 query_string_test.rb ),或者更确切地说是 match
使用 operator: "AND"
选项查询(参见 Tire 的 match_query_test.rb)。
有一些关于自动完成、Tire 和 Ngrams 的文章:
关于ruby-on-rails - 带有轮胎 : edgeNgram with multiple words 的 Elasticsearch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14120127/
我正在尝试为索引设置一个新的映射。它将支持由 ES 提供支持的部分关键字搜索和自动完成请求。 带有空白标记器的 edgeNGram 标记过滤器似乎是一种可行的方法。到目前为止,我的设置看起来像这样:
当我在一个字段上搜索时,评分似乎没有考虑字段的长度(即文本较长的文档与较短的文档的评分相同,并且出于某种原因放在前面)。不确定我做错了什么。 字段索引如下: "name": { "ty
我有大约一百万条记录的 Elasticsearch 索引。 我想对 Elasticsearch 索引中的2个字段,名称和ID(总共约10个)进行多前缀搜索。 创建EdgeNGram自动完成过滤器是否有
关于 EdgeNgram 如何处理数字有什么想法吗? 我正在使用 ElasticSearch 后端运行 haystack。我创建了一个 EdgeNgram 类型的索引字段。该字段将包含一个字符串,该字
我最近一直在尝试使用 Django Haystack (v2.1.0) 和 Elasticsearch (v0.90.5) 作为我的搜索引擎在我的网络应用程序上实现全文搜索。我的目标是能够通过一个查询
我正在尝试制作 部分搜索 工作,寻找 “sw” “瑞典” “瑞典” 应该匹配“瑞典” 我环顾四周,就是无法让它工作 Rails Code 我正在使用 this code从轮胎 repo 作为模板代码。
我们有一个符合 OData 的 API,可以将部分全文搜索需求委托(delegate)给 Elasticsearch 集群。 由于 OData 表达式可能变得非常复杂,因此我们决定将它们简单地转换为等
当我使用带有 edgengram (min=3, max=7, front) + term_vector=with_positions_offsets 的分析器时 文档有 text = "CouchD
我有一个大约 40k 行的数据集,每行有 4 个字段。现在我想对文本框中的这 4 个字段使用自动完成机制(在显示建议之前必须将这 4 个字段中的值连接成一个字符串)。哪种查询会更好地扩展和执行?在 E
我有一个大约 40k 行的数据集,每行有 4 个字段。现在我想对文本框中的这 4 个字段使用自动完成机制(在显示建议之前必须将这 4 个字段中的值连接成一个字符串)。哪种查询会更好地扩展和执行?在 E
假设我有 5 部电影片名: 无太阳 珊莎 这也是 Solr 古德 唯一幸存者 我想实现一个具有这种预期行为的自动完成搜索字段: “Sans”> Sans Soleil,Sansa “Sans so”
我有三个带有“用户名”字段的文档: '布里安迪利' 'briangumble' 'briangriffen' 当我搜索“brian”时,我按预期得到了所有三个,但是当我搜索“briandilley”时
编辑 3 :我现在使用的解决方法是从我的查询和索引字段中去除除字母、数字和空格以外的任何内容。这会产生所需的行为,但它在很大程度上是一种解决方法而不是真正的解决方案,而且我仍然想了解 Solr 为什么
我是一名优秀的程序员,十分优秀!