Rails / Sphinx:搜索摘录也显示搜索条件

时间:2014-03-18 10:08:48

标签: ruby-on-rails sphinx thinking-sphinx

这给出了我期待的结果:

result = Content.search("minerva", :conditions => {:publication_code => "12345678"})

result.first.element_type #=> "chapter"

result.first.excerpts.text #=> "outdated practice, The Owl of <span class=\"match\">Minerva</span> talks about the “unrealistic ‘Cartesian &#8230;  major premise The Owl of <span class=\"match\">Minerva</span> details the innumerable combinations possible &#8230;  concepts?” See The Owl of <span class=\"match\">Minerva</span>, p. 319. “Of course, ideally"

但是:如果我包含文字中确实存在的搜索条件,例如单词&#34; section&#34; (这是一个内容元素类型)这是我得到的:

result = Content.search("minerva", :conditions => {:publication_code => "12345678", :element_type => "section"})

result.first.element_type #=> "section"

result.first.excerpts.text #=> "November 2001. The Owl of <span class=\"match\">Minerva</span>, p. 107. provides as follows: &#8230;  foreign diplomatic or consular property, <span class=\"match\">section</span> 177 would place the United &#8230;  source of leverage. In addition, <span class=\"match\">section</span> 177 could seriously affect our"

&#34;从字面上看,部分&#34;现在也被视为匹配。我没有得到这种回应的原因。

更新以更多地说明问题:

此处有一个查询,可以在搜索条件中使用“I&#;;&#34;”这一术语附近找到一个搜索字词(&#34;认证&#34;),以限制我的搜索属于部分的element_type

result = Content.search("certification", :conditions => {:publication_code => "12345678", :element_type => "section"})

返回的文本是这个(缩写为匹配以下摘录,以及我的粗体文本):

result.first.text
  

[...]以及部分 10和部分 10 认证流程的运作。他注意到[...]

      部分 10(1)(b)引入的认证程序的对象不是[...]

     

[...]国内法院。 部分 10提供的认证程序同样[...]

致电result.first.excerpts.text给我以下内容。正如您所看到的,在文本中的任何地方都可以使用术语“分类”和“分类”。或者&#39;部分&#39;被发现,它被设置为匹配。

" &#8230; and operation of <span class=\"match\">section</span> 10 and the <span class=\"match\">section</span> 10 <span class=\"match\">certification</span> process. He noted: &#8230;  object of the <span class=\"match\">certification</span> procedure introduced by <span class=\"match\">section</span> 10(1)(b) was not to &#8230;  domestic court. The <span class=\"match\">certification</span> procedure provided for by <span class=\"match\">section</span> 10 is similarly &#8230; "

2 个答案:

答案 0 :(得分:1)

摘录窗格在生成输出时使用所有查询字词 - 包括提供的条件(因为它们最终成为Sphinx查询的一部分 - 例如,从Sphinx的角度来看,您的第二个示例是"minerva @publication_code 12345678 @element_type section")。

另一种方法是让你自己的excerpter只有你想要的查询:

excerpter = ThinkingSphinx::Excerpter.new 'content_core', 'minerva', {}
excerpter.excerpt! results.first.text

构建excerpter时的第一个参数是索引名称,第二个是要匹配的搜索查询,第三个是options

答案 1 :(得分:0)

我认为这只是一个巧合。 尝试使用文本中没有section的数据集来查看是否也会发生这种情况。