很多思考斯芬克斯最近向我提问。这是另一个:
在我的一些搜索中,我只想查询索引定义中包含的所有字段。我似乎无法找到任何相关内容,最接近的是将全局搜索限制为特定模型。
那么..是否可以仅查询索引中的给定字段子集?
答案 0 :(得分:8)
这可以通过Sphinx的extended match syntax:
来实现Model.search“@(name,description)ruby pancakes”,:match_mode => :扩展
其中名称和说明是您要搜索的字段,而'ruby pancakes'是搜索查询。
答案 1 :(得分:3)
现在,当Sphinx v3出局时,documentation表示默认情况下已启用扩展模式,因此您只需执行以下操作:
Model.search "@(name,description) ruby pancakes"
答案 2 :(得分:1)
不确定Thinking Sphinx,但我知道如果你通过SphinxQL直接命中Sphinx,你可以指定你想要匹配的字段。
如果TS没有向您公开此功能,我会感到惊讶......
答案 3 :(得分:1)
我暂时没有使用过TS,但我记得你可以创建单独的索引,其中包含你在主索引上使用的字段子集。我不认为Sphinx会区分您用来构建索引的字段,因为这就是您使用全文搜索服务器的原因 - 一次搜索多个字段的内容。
因此,只需检查如何使用其他字段构建新索引以及如何使用此新索引而不是默认索引。