我想用AJAX,PHP和&amp ;;创建一个全文搜索的自动提示。的MySQL。
我正在寻找实施后端的正确方法。当用户输入时,输入字段应该给他建议。应该通过表格中的文本来生成建议。
有关此信息的一些信息:它们以全文形式存储,由PDF生成,每页3-4页。现在不超过100个,在未来几年最多将达到2000个。
如果用户开始输入,他输入的单词应该用一个存储在DB中的单词完成,按出现次数降序排序。下一步是建议与其他单词的组合,在匹配第一个单词的entrys中具有高发生率。当然,您可以将其与Google自动提示进行比较。
我正在考虑 3种不同的方法来实现这一点:
通过cronjob生成索引,在夜间计算单词和组合的出现次数。用户搜索此索引。
我在一个'LIKE'%search%“'函数中进行实时搜索。然后我在这之后寻找这个词,并按发生的方式对它们进行分组。
我为所有用户搜索创建了一个日志文件,并寻找1)中的良好组合,因此每次搜索操作都会使搜索更加智能化。
从这个开始的最佳方式是什么?搜索应该快速且高效。 我没有考虑过更好的可能性吗?
答案 0 :(得分:0)
我使用mysql的MATCH()AGAINST()(http://dev.mysql.com/doc/refman/5.5/en/fulltext-search.html),例如:
SELECT *
FROM table
WHERE MATCH(column) AGAINST('search')
ORDER BY MATCH(column) AGAINST('search')
另一个优点是你可以进一步调整被搜索词的重要性(如果需要),例如:
MATCH(column) AGAINST('>important <lessimportant') IN BOOLEAN MODE
或者说要求搜索词中的某些词,而其他词可能不会出现在结果中,例如:
MATCH(column) AGAINST('+required -prohibited') IN BOOLEAN MODE
答案 1 :(得分:0)
我认为,没有1的想法是最好的。顺便说一句,不要忘记从autosuggest中消除停用词(an,the,by,...)。