0

我正在用 PHP、SQL 和 JQuery 为我的网站编写搜索引擎。我有使用数据库中现有数据添加自动完成功能的经验(即搜索文章标题)。但是,如果我想使用用户键入的最常见的搜索查询,类似于 Google 的搜索查询,而没有太多用户参与数据的创建(最常见的查询),该怎么办?是否有某种带有自动完成数据的开源 SQL 表或类似的东西?

4

4 回答 4

1
  1. 截至目前,使用您拥有的静态数据进行自动完成。
  2. 在您的数据库中创建另一个表来存储实际的用户查询。表的模式可以<queryID, query, count>是每次其他用户 [Kind of Rank] 提供相同查询时计数增加的地方。N-Gram 索引(这样当人们只输入“United”时,您也可以自动完成类似“Manchester United”之类的内容,即不仅仅是使用起始字符串)查询并在使用 count 排序后简单地返回前 N 个。
  3. 当您的用户群开始增加时,上表将逐渐改进。
  4. 还有一件事,完成任务的算法非常简单。然而,真正的挑战在于在几秒钟内返回要显示的数据。因此,当您的查询数据库/存储大小增加时,您可以使用像 Solr/Sphinx 这样的搜索引擎来搜索您,这将很快返回要呈现的结果。
于 2012-12-11T07:46:30.893 回答
0

谷歌有(并且有)数千个条目,这些条目是根据(日期、时间、地理位置、语言......)排列的,并且随着用户条目的增加而增加,每当用户输入一个单词时,系统都会检查“大部分使用过的词属于那个位置+天+时间”+(如果没有答案)然后是“一般词”。因此,您应该对用户输入的每个单词进行分类,或者制作您数据库的通用单词关系表,其中将引用最合适的搜索答案。

于 2012-12-09T19:53:06.653 回答
0

昨天我偶然发现了一些回答我问题的东西。Google 会从此 XML 文件中提取自动完成建议,因此如果您的用户很少使用关键字创建自己的数据库,那么使用它是明智的:

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

只需将 [keyword] 替换为某个单词即可给出有关该单词的建议,然后任务只是解析返回的 xml 并格式化输出以满足您的需求。

于 2012-12-20T09:31:03.113 回答
0

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

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

于 2012-12-09T19:48:41.267 回答