我已使用Sphinx和Thinking Sphinx实施了全文搜索。 我想添加列式搜索。有点像:-(以Stack Overflow为例)
假设您想要查看与您相关的活动,只需输入:
user:me
然后它会返回一个结果,其中包含与piemesons相关的所有问题和答案。
如果您输入
votes:15
然后它将返回一个结果,所有问题都标记为超过15票。
如果你输入
user:me votes:15
然后它将以超过15票的价格返回属于您的所有问题和答案。
我该如何实现这个?
现在我的搜索结果基于全文搜索。如何包含这些功能?
Sphinx或Solr或任何其他搜索引擎中可用的任何选项?
答案 0 :(得分:2)
:with
选项。
首先,您必须在索引定义中定义这些属性(check out attributes section here)。
has views_count, :as => :views, :type => :integer
has user.id, :as => :user, :type => :integer
然后你可以搜索这样的帖子:
Post.search '', :with => {:views => 12..maxint, :user => User.first.id}
(我不确定是否有更优雅的可能性给出开放范围,但12..max_int应该足够了)
两件重要的事情:
"CRC32(CONCAT(user_type, user_id))"
代替user.id