用于全文搜索的自动提示的后端

时间:2011-11-16 11:47:11

标签: php mysql search full-text-search autosuggest

我想用AJAX,PHP和&amp ;;创建一个全文搜索的自动提示。的MySQL。

我正在寻找实施后端的正确方法。当用户输入时,输入字段应该给他建议。应该通过表格中的文本来生成建议。

有关此信息的一些信息:它们以全文形式存储,由PDF生成,每页3-4页。现在不超过100个,在未来几年最多将达到2000个。

如果用户开始输入,他输入的单词应该用一个存储在DB中的单词完成,按出现次数降序排序。下一步是建议与其他单词的组合,在匹配第一个单词的entrys中具有高发生率。当然,您可以将其与Google自动提示进行比较。

我正在考虑 3种不同的方法来实现这一点:

  1. 通过cronjob生成索引,在夜间计算单词和组合的出现次数。用户搜索此索引。

  2. 我在一个'LIKE'%search%“'函数中进行实时搜索。然后我在这之后寻找这个词,并按发生的方式对它们进行分组。

  3. 我为所有用户搜索创建了一个日志文件,并寻找1)中的良好组合,因此每次搜索操作都会使搜索更加智能化。

  4. 从这个开始的最佳方式是什么?搜索应该快速且高效。 我没有考虑过更好的可能性吗?

2 个答案:

答案 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,...)。