我想建立一个网站搜索网站,其中所有内容(或至少可搜索的内容)将存储在数据库中。在没有极度参与的情况下,我能想到这样做的最好方法如下:
实现诸如在页面标题中使用搜索词给结果带来更多价值,或者允许用户使用引号搜索多词短语等事情并不会太复杂。
除了性能方面的考虑 - 限制返回的结果,缓存等,还有什么我需要考虑的或更好的方法来解决这个问题(除了实现Google搜索框)?
答案 0 :(得分:1)
不确定极度参与的阈值是什么,但我可能会首先搜索包含整个字符串数组的匹配项,然后调用您描述的方法。
考虑:两个内容将作为单独的结果返回。
结果1:
____ brown ____ ____ _____ ____ brown ____ ____ ______ ___ brown _____ ____ brown
结果2:
brown leather sofas _____ _____ ______ ____ _____.
显然,我们希望将结果2作为最高结果返回,但是您的方法会为结果1分配更多“点”。
答案 1 :(得分:0)
您考虑过Full Text Searching了吗?它并不适用于所有情况,但可以帮助解决这类问题。
SELECT *
FROM articles
WHERE MATCH (title, body)
AGAINST ('database' IN NATURAL LANGUAGE MODE);
请务必阅读docs,因为有一些有趣的问题可以吸引新用户,例如:
如果您创建一个表并仅在其中插入一行或两行文本,则文本中的每个单词都会出现在至少50%的行中。因此,没有搜索会返回任何结果。一定要插入至少三行,最好是多行。