Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 用于搜索的索引文件很大_Python_Json_Algorithm_Indexing_Full Text Search - Fatal编程技术网

Python 用于搜索的索引文件很大

Python 用于搜索的索引文件很大,python,json,algorithm,indexing,full-text-search,Python,Json,Algorithm,Indexing,Full Text Search,我已经用python编写了一个算法,用于索引约500个文本文件(有些文件大于2MB)中的每个单词,以便在我的应用程序的搜索引擎中使用。索引文件是基于json的,即{key:value}结构。索引的数据有:文件ID、段落ID和行号。每一个字都是这样。相似的词组合在一起 问题是索引文件变得相对较大(是行数据的两倍多),这将增加我的应用程序的大小。该应用程序在没有internet的情况下使用,因此索引文件必须在内提供 这是我第一次处理这些事情,所以我想知道是否有办法通过使用json以外的其他数据库结构

我已经用python编写了一个算法,用于索引约500个文本文件(有些文件大于2MB)中的每个单词,以便在我的应用程序的搜索引擎中使用。索引文件是基于json的,即{key:value}结构。索引的数据有:文件ID、段落ID和行号。每一个字都是这样。相似的词组合在一起

问题是索引文件变得相对较大(是行数据的两倍多),这将增加我的应用程序的大小。该应用程序在没有internet的情况下使用,因此索引文件必须在内提供

这是我第一次处理这些事情,所以我想知道是否有办法通过使用json以外的其他数据库结构、放置索引文件的最佳格式或其他任何方式来减小大小


提前感谢。

您应该检查此模块:

您应该检查此模块:

您的JSON结构是一个不错的选择,但为了不使您的应用程序变大,您可以使用分布式系统进行索引

我的意思是,您可以创建许多索引文件,而不是一个,并且您可以编写一个算法,以分布式方式在其中进行搜索

关于大小问题,您可以压缩它们,并解压缩每个索引文件,仅用于搜索


例如:

索引文件:f1、f2、f3

它们将被压缩并存储在您的应用程序中,您可以在此处搜索:


您的JSON结构是一个很好的选择,但为了不让应用程序变大,您可以使用分布式系统进行索引

我的意思是,您可以创建许多索引文件,而不是一个,并且您可以编写一个算法,以分布式方式在其中进行搜索

关于大小问题,您可以压缩它们,并解压缩每个索引文件,仅用于搜索


例如:

索引文件:f1、f2、f3

它们将被压缩并存储在您的应用程序中,您可以在此处搜索:


你可以检查我的建议段落ID似乎多余。它可以从文件ID和行号推断出来。另外,你是否随应用程序发送原始数据?@user58697这是一个诗歌应用程序,我指的是诗歌段落。它应该被索引。你可以检查我的建议段落ID似乎多余。它可以从文件ID和行号推断出来。另外,你是否随应用程序发送原始数据?@user58697这是一个诗歌应用程序,我指的是诗歌段落。它应该被索引。你说的分布式系统是什么意思?@Ali_Habeeb它是一个与位于不同计算机或网络(或同一计算机中的不同节点)中的组件一起工作的系统,在你的例子中,它是同一计算机中的分布式算法,我向您推荐了以下解决方案,因为我会更好地压缩多个1 MB的文件,而不是一个2 MB或更多的文件(这会使您减少更多内存)。我会尝试一下。@Ali_Habeeb好运气你说的分布式系统是什么意思?@Ali_Habeeb是一个与位于不同计算机或网络中的组件一起工作的系统(或同一台计算机中的不同节点),在您的情况下,这是同一台计算机中的分布式算法,我建议您使用以下解决方案,因为我最好压缩多个1 MB的文件,而不是一个2 MB或更多的文件(这将使您减少更多内存)我会试一试。@Ali_Habeeb Good luckIt说它不是人类可读的,是特定于python的。我的应用程序是用Swift lang编写的。JSON是人类可读的。它说它不是人类可读的,是特定于python的。我的应用程序是用Swift lang编写的。JSON是人类可读的。
for f in f1 , f2 , f3 :
    index_file = decompress(f)
    # search within index_file