【问题标题】:Prioritize fields which start with search term using Sphinx (Thinking Sphinx) - or another full-text search engine使用 Sphinx(Thinking Sphinx)或其他全文搜索引擎对以搜索词开头的字段进行优先排序
【发布时间】:2009-12-22 10:06:38
【问题描述】:

我正在使用 sphinx 和 think sphinx 来搜索客户数据库。客户元数据(电子邮件、电话等)分布在多个表中,sphinx 索引客户等的所有注释。我遇到的问题是我希望以搜索词开头的文本字段首先显示在搜索中。即搜索“hods”应该按顺序返回结果:

  • 霍德斯
  • 霍德斯
  • 霍德森
  • 方法

这意味着应该优先考虑(大致按此顺序):

  • 词组开始
  • 完整的单词
  • 单词开头

我尝试使用复合搜索词来实现这一点(例如“^hods | hods | hods* | *hods”)。

这样的事情可以确保我找到所有合适的结果 - 但似乎不会影响它们的排名!!我在文档中也找不到任何有用的东西!!

有什么想法吗?狮身人面像有可能吗?还有其他可能的搜索解决方案吗?

【问题讨论】:

    标签: ruby-on-rails full-text-search solr sphinx thinking-sphinx


    【解决方案1】:

    Sphinx 1.10 引入了新的ranking modeSPH_RANK_SPH04

    您可以使用thinking-sphinx 设置排名模式,尽管它的主页上没有记录。我现在不记得我是如何做到的,但它与设置其他搜索参数非常相似。

    【讨论】:

      【解决方案2】:

      我从未使用过 ThinkingSphinx,但我 boost query terms 一直使用 Lucene/Solr。大多数搜索工具都应该有类似的机制。

      【讨论】:

        【解决方案3】:
        (e.g. "^hods | hods | hods* | *hods")
        

        此查询不优先考虑结果。上面的查询只决定获取什么。

        如果您必须确定优先级,则可能必须使用排名模式..或排序模式。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-01-03
          • 2013-01-31
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多