我在狮身人面像上有这样的索引:
ThinkingSphinx::Index.define :publication, :with => :active_record do
indexes transcript.transcript_text, :as => :transcript
indexes taggings.tag.name, :as => :tags
end我想做一个搜索,忽略记录,只搜索标签。有什么办法来组织搜索来做到这一点吗?
我认为在这个索引上可能不可能,所以我为此创建了一个新的索引:
ThinkingSphinx::Index.define :publication, :name => 'tag_only', :with => :active_record do
indexes taggings.tag.name, :as => :tags
end但是,我没有找到任何关于如何在搜索中实际使用这样的命名索引的信息。我在哪里指定要在这样的查询中使用tag_only索引:
Publication.search(terms, :with => with_conditions, :ranker => :matchany)任何洞察力都将不胜感激,谢谢!
发布于 2016-06-07 00:25:18
据我所理解,定义中的每个indexes都是在基础的狮身人面像索引中创建一个field。
默认情况下,对索引的搜索查询搜索所有字段。因此,在第一个示例中,对该索引的搜索将包括这两个字段。
根据定义,对第二个只有一个字段的索引的搜索只会搜索该字段。因此,不需要详细说明特定的领域。
..。要在特定索引中仅搜索一个字段(或其他子集),可以直接使用狮身人面像扩展语法。http://sphinxsearch.com/docs/current.html#extended-syntax
或者它可以使用条件http://freelancing-gods.com/thinking-sphinx/searching.html#conditions (必须映射到自动扩展查询:)
有点像
Publication.search :conditions => {:tags => terms}, :ranker => :matchany其中:tags是您在定义中所称的字段(抱歉,不知道ruby语法是否准确。)
https://stackoverflow.com/questions/37662209
复制相似问题