自动完成概念

时间:2012-12-09 19:40:44

标签: php jquery autocomplete

我正在使用PHP,SQL和JQuery为我的网站编写搜索引擎。我有使用数据库中的现有数据添加自动完成功能的经验(即搜索文章标题)。但是,如果我想使用用户输入的最常见的搜索查询,类似于Google的搜索查询,而没有那么多用户为数据的创建做出贡献(最常见的查询)呢?是否有某种开源SQL表中包含自动完成数据或类似内容?

4 个答案:

答案 0 :(得分:1)

  1. 截至目前,使用您自动完成的静态数据。
  2. 在数据库中创建另一个表以存储实际的用户查询。表的模式可以是<queryID, query, count>,其中每次由其他用户[种类排序]提供相同查询时,计数递增。 N-Gram索引(这样你也可以自动完成像“曼联”这样的东西,当人只是键入“United”,即不只是用起始字符串)查询时,只需在使用count排序后返回前N个。
  3. 当您的用户群开始增加时,上表将逐步改进。
  4. 还有一件事,完成任务的算法非常简单。然而,真正的挑战在于返回要在几秒钟内显示的数据。因此,当您的查询数据库/商店大小增加时,您可以使用像Solr / Sphinx这样的搜索引擎来搜索您,这将很快返回要呈现的结果。

答案 1 :(得分:0)

Lucene您可以使用Lucene搜索引擎实现此功能。请参阅此link

或者你也可以看看Lucene Solr Autocomplete ...

答案 2 :(得分:0)

谷歌拥有(并且拥有)数千个根据(日,时间,地理位置,语言......)排列的条目,并且随着用户输入单词系统检查表格,用户条目会增加“主要使用的词语属于该位置+日+时间”+(如果没有答案)则为“一般词语”。因此,您应该对用户输入的每个单词进行分类,或者为您创建数据库的一般单词关系表,其中将引用最合适的搜索答案。

答案 3 :(得分:0)

昨天我偶然发现了一些回答我问题的事情。 Google会从此XML文件中提取自动填充建议,因此,如果您几乎没有用户使用关键字创建自己的数据库,那么使用它是明智的:

http://google.com/complete/search?q=[keyword]&output=toolbar  

只需用某个单词替换[keyword]即可给出有关该单词的建议,然后这些单词只是解析返回的xml并根据您的需要格式化输出。