超出默认相关性的额外全文排序标准

时间:2010-03-21 11:37:23

标签: mysql criteria sql-order-by full-text-search

我正在实施成分文本搜索,以便为食谱添加成分。我目前在成分名称上有一个全文索引,它存储在一个文本字段中,如下所示:

“Sauce,tomato,lite,Heinz”

我发现因为数据库中有许多名称非常相似的成分,所以简单地按相关性排序在很多时候都不能正常工作。所以,我发现自己按照一堆自己的经验法则进行排序,这可能会复制很多全文搜索算法,这种算法会产生数值相关性。例如(删节):

ORDER BY [成分名称正是搜索词], [成分名称以搜索词开头], [成分名称以搜索中的任何单词开头,并按某种顺序包含所有搜索词], [成分名称包含某些顺序的所有搜索词],

......等等。其中每个都在SELECT规范中定义为返回1或0的表达式,因此我按顺序排序。

我很想听听以下建议:

  • 在一个地方定义复杂的顺序依据标准的更好方法,比如可能在视图或存储过程中,您可以只传递搜索项并获取一组结果,而不必担心它们是如何有序?
  • 比MySQL的全文引擎更好的工具 - 也许如果我使用的是Sphinx或者某种东西[我之前听过但以前没用过],我会找到某种复杂的配置选项来解决像这样的问题?
  • 某些谷歌搜索字词可能会引发关于如何在特定域内订购文本项目的讨论?我没有找到太多有用的东西。

感谢阅读!

1 个答案:

答案 0 :(得分:0)

杰里米,

您正在寻找的是Solr支持的Rank Boosting。这是一个链接,您可以在其中阅读更多相关信息:

http://wiki.apache.org/solr/SolrRelevancyCookbook#Ranking_Terms