我想为一个所有内容(或至少是可搜索的内容)都存储在数据库中的网站构建一个全站范围的搜索。我能想到的最好的方法如下:
- 用户输入搜索查询 - “棕色真皮沙发”。
- 将查询拆分为一个数组。
- 对数组的每一行使用 LIKE %$val% 搜索数据库 (mysql)。
- 将结果加载到一个数组中,然后根据在内容中找到的搜索词的数量为每个结果 +1 分。
- 如果结果中的字词数量相匹配,则按特定页面的浏览量排序 - 这是受欢迎程度的指标。
通过页面标题中的搜索词为结果赋予更多值(value),或者允许用户使用引号搜索多词短语等操作不会太复杂。
除了性能方面的考虑 - 限制返回的结果、缓存等,还有什么我需要考虑的或更好的方法来解决这个问题(除了实现 Google 搜索框之外)?
最佳答案
不确定极端参与的阈值是多少,但我可能会先搜索包含整个字符串数组的匹配项,然后调用您描述的方法。
考虑:将作为单独结果返回的两部分内容。
结果 1:
____ brown ____ ____ _____ ____ brown ____ ____ ______ ___ brown _____ ____ brown
结果 2:
brown leather sofas _____ _____ ______ ____ _____.
显然,我们希望返回结果 2 作为最高结果,但是您的方法会为结果 1 分配更多“点”。
关于mysql - 基本的全站搜索方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11245700/