我正在实施成分文本搜索,以将成分添加到配方中。我目前在成分名称上有一个全文索引,该索引存储在单个文本字段中,如下所示:
“酱油,番茄,建兴,亨氏”
我发现,由于数据库中有很多成分的名称非常相似,因此仅按相关性排序在很多时候都无法很好地工作。因此,我发现自己是根据自己的经验法则进行排序的,这很可能重复了很多全文搜索算法,这些算法散发出数值相关性。例如(删节):
订购
[成分名称正是搜索字词],
[成分名称以搜索词开头],
[成分名称以搜索中的任何单词开头,并以某种顺序包含所有搜索词],
[成分名称以某种顺序包含所有搜索词],
...等等。这些在SELECT规范中都定义为返回1或0的表达式,因此我按顺序对其进行排序。
我希望听到以下建议:
更好的方法是在一个地方定义复杂的排序标准,比如说在视图或存储过程中,您可以只将搜索词传递给并返回一组结果,而不必担心如何排序?
一个比MySQL全文引擎更好的工具-也许如果我使用的是Sphinx或某些东西(我以前听说过但以前没有使用过),我是否会找到某种复杂的配置选项来解决此类问题?
一些Google搜索字词可能会引发关于如何在这样的特定域内订购文本项的讨论?我没有发现太多用处。
谢谢阅读!
最佳答案
杰里米
您正在寻找的是Solr支持的Rank Boosting。这是一个链接,您可以在其中了解更多信息:
http://wiki.apache.org/solr/SolrRelevancyCookbook#Ranking_Terms
关于mysql - 超出默认相关性的额外全文订购条件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2486899/