gpt4 book ai didi

jquery - 使用JQuery和JSON格式的平面文件进行快速,动态的自动建议

转载 作者:行者123 更新时间:2023-12-01 06:03:17 25 4
gpt4 key购买 nike

我一直在努力解决这个问题,所以我最终决定将它放在Stackoverflow上,希望有人可以帮助我解决这个问题。

让我概述一下问题:


自动建议功能的最基本用法是在每次击键时查询数据库。


这种方法的优点是您始终可以获得最新结果。

缺点是它可能很慢,并且每次击键都很难解决数据库问题。假设您要自动建议一个国家/地区表,搜索类似“ america”的内容将在数据库上生成7个SELECT查询!
因此,该方法不是一种选择。


第二种选择(我当前正在使用的一种)是收集所有可能的结果并将其保存为JSON格式的平面文件。
因此,基本上,您只有一个文件,例如Nations.json,其中包含所有国家。而不是查询数据库,我仅指向国家json文件,每次击键都将在加载的json文件中进行搜索。


此方法快速并且可以利用数据库。在国家/地区的示例中,这将是一个很好的解决方案,因为内容不是很动态,并且不包含太多数据,因此json平面文件将非常小,因此可以快速下载。

但是,当json文件包含动态数据并具有较大的数据集时,就会出现问题。
如果要建立一个包含所有电影和演员的自动建议搜索怎么办?
将所有结果放在一个json文件中将是荒谬的,因为该文件可能太大而无法下载。
让我们以IMDB(www.imdb.com)为例。他们在其网站上具有自动提示功能。搜索电影标题或演员的速度非常快,并且可以在数十万条记录中进行搜索。更深入地研究他们的方法,我注意到以下几点:

如果您使用Google Chrome调试窗口(或Filezilla Firefox Firebug):
在网络标签内查找脚本。例如,当您输入“星球大战”的字样时,您会注意到通过输入每个字母会加载一个单独的json文件。
首先是s.json,然后是st.json,sta.json等...
它停止在star_w.json
显然,它总是在第6个字母处停止。

它加载的每个json文件均包含8个与字母匹配的结果。似乎有36个文件夹匹配每个字母(包括数字)。
例如,star_w.json的链接为http://sg.media-imdb.com/suggests/s/star_w.json

我的问题是您将如何构建类似的智能系统?他们是否有6个字母的所有可能组合作为json文件?您将如何生成文件?
还请注意,它不仅查看标题的开头以进行匹配。
因此,如果您要搜索“战争”,您还将在搜索结果中找到“星球大战”。

在解决建立类似系统方面的任何帮助将不胜感激。
我认为该系统非常简洁,快速,可以用于多种用途!

编辑

好的,解决了。
我的解决方案是查询数据库并将结果缓存在平面json文件中的组合。
基本上,当用户键入在“星际大战”中,每次击键时,我都会首先检查searchstring是否存在json文件。如果存在,我将仅显示json文件的内容。如果文件不存在或文件的时间早于您设置的特定时限(例如,早于12小时),则查询数据库并在json中回显输出。
同时,您将输出写入json文件。下次进行搜索时,它只会从平面文件而不是从DB中获取它的内容(直到达到TTL)。
我将字母的长度限制为6个字母,因此,如果搜索字符串大于6个字母,则什么也没有发生,您只需继续查找最后找到的结果的搜索结果即可,例如“星际大战” star_w

使用此方法,将根据用户输入自动填充缓存的json结果的集合。
您还可以编写一个脚本来循环表并生成json文件...

我知道这不是一个完美的解决方案,但是至少通过这种方式,您可以通过将结果缓存在平面文件中来减轻数据库的负担。

最佳答案

我将使用一些可以创建索引的搜索引擎软件,该软件比RDMS可以提供​​的索引更适合这些情况。

看看Softbool的Boolware:http://www.softbool.se/(单击“英语”)链接...

可怕的网页,很棒的产品。

关于jquery - 使用JQuery和JSON格式的平面文件进行快速,动态的自动建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9113349/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com