Maison base de données tutoriel mysql 影响Lucene索引速度原因以及提高索引速度技巧

影响Lucene索引速度原因以及提高索引速度技巧

Jun 07, 2016 pm 03:16 PM
lucene 原因 影响 技巧 提高 索引 速度

在网上看了一篇外文文章,里面介绍了提高Lucene索引速度的技巧,分享给大家。 先来看下影响索引的主要因素: MaxMergeDocs 该参数决定写入内存索引文档个数,到达该数目后就把该内存索引写入硬盘,生成一个新的索引segment文件。 所以该参数也就是一个内存bu

在网上看了一篇外文文章,里面介绍了提高Lucene索引速度的技巧,分享给大家。
影响Lucene索引速度原因以及提高索引速度技巧先来看下影响索引的主要因素:

MaxMergeDocs
该参数决定写入内存索引文档个数,到达该数目后就把该内存索引写入硬盘,生成一个新的索引segment文件。
所以该参数也就是一个内存buffer,一般来说越大索引速度越快。
MaxBufferedDocs这个参数默认是disabled的,因为Lucene中还用另外一个参数(RAMBufferSizeMB)控制这个bufffer的索引文档个数。
其实MaxBufferedDocs和RAMBufferSizeMB这两个参数是可以一起使用的,一起使用时只要有一个触发条件满足就写入硬盘,生成一个新的索引segment文件。

RAMBufferSizeMB
控制用于buffer索引文档的内存上限,如果buffer的索引文档个数到达该上限就写入硬盘。当然,一般来说也只越大索引速度越快。
当我们对文档大小不太确定时,这个参数就相当有用,不至于outofmemory error.

MergeFactor
这个参数是用于子索引(Segment)合并的。
Lucene中索引总体上是这样进行,索引现写到内存,触发一定限制条件后写入硬盘,生成一个独立的子索引-lucene中叫Segment。一般来说这些子索引需要合并成一个索引,也就是optimize(),否则会影响检索速度,而且也可能导致open too many files。
MergeFactor 这个参数就是控制当硬盘中有多少个子索引segments,我们就需要现把这些索引合并冲一个稍微大些的索引了。
MergeFactor这个不能设置太大,特别是当MaxBufferedDocs比较小时(segment 越多),否则会导致open too many files错误,甚至导致虚拟机外面出错。

Note: Lucene 中默认索引合并机制并不是两两合并,好像是多个segment 合并成最终的一个大索引,所以MergeFactor越大耗费内存越多,索引速度也会快些,但我的感觉太大譬如300,最后合并的时候还是很满。Batch indexing 应 MergeFactor>10

影响Lucene索引速度原因以及提高索引速度技巧21世纪开运网星座紫微斗数在线排盘加快索引的一些技巧:

? 确认你在使用最新的Lucene版本。

? 尽量使用本地文件系统

远程文件系统一般来说都会降低索引速度。如果索引必须分布在远程服务器,请尝试先在本地生成索引,然后分发到远程服务器上。
? 使用更快的硬件设备,特别是更快的IO设备

? 在索引期间复用单一的IndexWriter实例

? 使用按照内存消耗Flush代替根据文档数量Flush
在Lucene 2.2之前的版本,可以在每次添加文档后调用ramSizeInBytes方法,当索引消耗过多的内存时,然后在调用flush()方法。这样做在索引大量小文档或者文档大小不定的情况下尤为有效。你必须先把maxBufferedDocs参数设置足够大,以防止writer基于文档数量flush。但是注意,别把这个值设置的太大,否则你将遭遇Lucene-845号BUG。不过这个BUG已经在2.3版本中得到解决。

在Lucene2.3之后的版本。IndexWriter可以自动的根据内存消耗调用flush()。你可以通过writer.setRAMBufferSizeMB()来设置缓存大小。当你打算按照内存大小flush后,确保没有在别的地方设置MaxBufferedDocs值。否则flush条件将变的不确定(谁先符合条件就按照谁)。

? 在你能承受的范围内使用更多的内存
在flush前使用更多的内存意味着Lucene将在索引时生成更大的segment,也意味着合并次数也随之减少。在Lucene-843中测试,大概48MB内存可能是一个比较合适的值。但是,你的程序可能会是另外一个值。这跟不同的机器也有一定的关系,请自己多加测试,选择一个权衡值。

? 关闭复合文件格式
调用setUseCompoundFile(false)可以关闭复合文件选项。生成复合文件将消耗更多的时间(经过Lucene-888测试,大概会增加7%-33%的时间)。但是请注意,这样做将大大的增加搜索和索引使用的文件句柄的数量。如果合并因子也很大的话,你可能会出现用光文件句柄的情况。

? 重用Document和Field实例
在lucene 2.3中,新增了一个叫setValue的方法,可以允许你改变字段的值。这样的好处是你可以在整个索引进程中复用一个Filed实例。这将极大的减少GC负担。

最好创建一个单一的Document实例,然后添加你想要的字段到文档中。同时复用添加到文档的Field实例,通用调用相应的SetValue方法改变相应的字段的值。然后重新将Document添加到索引中。

注意:你不能在一个文档中多个字段共用一个Field实例,在文档添加到索引之前,Field的值都不应该改变。也就是说如果你有3个字段,你必须创建3个Field实例,然后再之后的Document添加过程中复用它们。

? 在你的分析器Analyzer中使用一个单一的Token实例
在分析器中共享一个单一的token实例也将缓解GC的压力。

? 在Token中使用char[]接口来代替String接口来表示数据
在Lucene 2.3中,Token可以使用char数组来表示他的数据。这样可以避免构建字符串以及GC回收字符串的消耗。通过配合使用单一Token实例和使用char[]接口你可以避免创建新的对象。

? 设置autoCommit为false
在Lucene 2.3中对拥有存储字段和Term向量的文档进行了大量的优化,以节省大索引合并的时间。你可以将单一复用的IndexWriter实例的autoCommit设置为false来见证这些优化带来的好处。注意这样做将导致searcher在IndexWriter关闭之前不会看到任何索引的更新。如果你认为这个对你很重要,你可以继续将autoCommit设置为true,或者周期性的打开和关闭你的writer。

? 如果你要索引很多小文本字段,如果没有特别需求,建议你将这些小文本字段合并为一个大的contents字段,然后只索引contents。(当然你也可以继续存储那些字段)

? 加大mergeFactor合并因子,但不是越大越好
大的合并因子将延迟segment的合并时间,这样做可以提高索引速度,因为合并是索引很耗时的一个部分。但是,这样做将降低你的搜索速度。同时,你有可能会用光你的文件句柄如果你把合并因子设置的太大。值太大了设置可能降低索引速度,因为这意味着将同时合并更多的segment,将大大的增加硬盘的负担。

? 关闭所有你实际上没有使用的功能
如果你存储了字段,但是在查询时根本没有用到它们,那么别存储它们。同样Term向量也是如此。如果你索引很多的字段,关闭这些字段的不必要的特性将对索引速度提升产生很大的帮助。

? 使用一个更快的分析器
有时间分析文档将消耗很长的时间。举例来说,StandardAnalyzer就比较耗时,尤其在Lucene 2.3版本之前。你可以尝试使用一个更简单更快但是符合你需求的分析器。

? 加速文档的构建时间
在通常的情况下,文档的数据来源可能是外部(比如数据库,文件系统,蜘蛛从网站上的抓取等),这些通常都比较耗时,尽量优化获取它们的性能。

? 在你真的需要之前不要随意的优化optimize索引(只有在需要更快的搜索速度的时候)

? 在多线程中共享一个IndexWriter
最新的硬件都是适合高并发的(多核CPU,多通道内存构架等),所以使用多线程添加文档将会带来不小的性能提升。就算是一台很老的机器,并发添加文档都将更好的利用IO和CPU。多测试并发的线程数目,获得一个临界最优值。

? 将文档分组在不同的机器上索引然后再合并
如果你有大量的文本文档需要索引,你可以把你的文档分为若干组,在若干台机器上分别索引不同的组,然后利用writer.addIndexesNoOptimize来将它们合并到最终的一个索引文件中。

? 运行性能测试程序
如果以上的建议都没有发生效果。建议你运行下性能检测程序。找出你的程序中哪个部分比较耗时。这通常会给你想不到的惊喜。


http://wiki.apache.org/jakarta-lucene/ImproveIndexingSpeed

 

http://www.21kaiyun.com

 

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Commandes de chat et comment les utiliser
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

VBOX_E_OBJECT_NOT_FOUND(0x80bb0001)Erreur VirtualBox VBOX_E_OBJECT_NOT_FOUND(0x80bb0001)Erreur VirtualBox Mar 24, 2024 am 09:51 AM

Lorsque vous essayez d'ouvrir une image disque dans VirtualBox, vous pouvez rencontrer une erreur indiquant que le disque dur ne peut pas être enregistré. Cela se produit généralement lorsque le fichier image disque de la VM que vous essayez d'ouvrir a le même UUID qu'un autre fichier image disque virtuel. Dans ce cas, VirtualBox affiche le code d'erreur VBOX_E_OBJECT_NOT_FOUND(0x80bb0001). Si vous rencontrez cette erreur, ne vous inquiétez pas, vous pouvez essayer quelques solutions. Tout d'abord, vous pouvez essayer d'utiliser les outils de ligne de commande de VirtualBox pour modifier l'UUID du fichier image disque, ce qui évitera les conflits. Vous pouvez exécuter la commande `VBoxManageinternal

Qu'est-ce qui empêche WPS Office de démarrer un travail d'impression ? Qu'est-ce qui empêche WPS Office de démarrer un travail d'impression ? Mar 20, 2024 am 09:52 AM

Lors de la connexion d'une imprimante à un réseau local et du démarrage d'un travail d'impression, certains problèmes mineurs peuvent survenir. Par exemple, le problème "wpsoffice ne peut pas démarrer le travail d'impression..." se produit occasionnellement, entraînant l'impossibilité d'imprimer des fichiers, etc. ., retardant notre travail et nos études et provoquant un impact négatif, laissez-moi vous expliquer comment résoudre le problème selon lequel wpsoffice ne peut pas démarrer le travail d'impression ? Bien sûr, vous pouvez mettre à niveau le logiciel ou le pilote pour résoudre le problème, mais cela vous prendra beaucoup de temps. Ci-dessous, je vais vous donner une solution qui peut être résolue en quelques minutes. Tout d'abord, j'ai remarqué que wpsoffice ne pouvait pas démarrer le travail d'impression, ce qui entraînait l'impossibilité d'imprimer. Pour résoudre ce problème, nous devons enquêter un par un. Assurez-vous également que l’imprimante est sous tension et connectée. Généralement, une connexion anormale entraînera

Mar 22, 2024 pm 12:45 PM

Un guide complet des erreurs PHP500 : causes, diagnostics et correctifs Au cours du développement PHP, nous rencontrons souvent des erreurs avec le code d'état HTTP 500. Cette erreur est généralement appelée « 500InternalServerError », ce qui signifie que des erreurs inconnues se sont produites lors du traitement de la requête côté serveur. Dans cet article, nous explorerons les causes courantes des erreurs PHP500, comment les diagnostiquer et comment les corriger, et fournirons des exemples de code spécifiques pour référence. Causes courantes des erreurs 1.500 1.

Partage de conseils Win11 : une astuce pour éviter de vous connecter avec un compte Microsoft Partage de conseils Win11 : une astuce pour éviter de vous connecter avec un compte Microsoft Mar 27, 2024 pm 02:57 PM

Partage de conseils Win11 : une astuce pour éviter la connexion au compte Microsoft Windows 11 est le dernier système d'exploitation lancé par Microsoft, avec un nouveau style de conception et de nombreuses fonctions pratiques. Cependant, pour certains utilisateurs, devoir se connecter à leur compte Microsoft à chaque démarrage du système peut être un peu ennuyeux. Si vous en faites partie, autant essayer les conseils suivants, qui vous permettront d'éviter de vous connecter avec un compte Microsoft et d'accéder directement à l'interface de bureau. Tout d’abord, nous devons créer un compte local dans le système pour nous connecter au lieu d’un compte Microsoft. L'avantage de faire cela est

Un incontournable pour les vétérans : Conseils et précautions pour * et & en langage C Un incontournable pour les vétérans : Conseils et précautions pour * et & en langage C Apr 04, 2024 am 08:21 AM

En langage C, il représente un pointeur qui stocke l'adresse d'autres variables ; & représente l'opérateur d'adresse, qui renvoie l'adresse mémoire d'une variable. Les conseils pour l'utilisation des pointeurs incluent la définition des pointeurs, le déréférencement des pointeurs et la garantie que les pointeurs pointent vers des adresses valides. Les conseils pour l'utilisation des opérateurs d'adresse incluent l'obtention d'adresses variables et le retour de l'adresse du premier élément du tableau lors de l'obtention de l'adresse d'un élément du tableau ; . Un exemple pratique démontrant l'utilisation d'opérateurs de pointeur et d'adresse pour inverser une chaîne.

Quelles sont les astuces pour les novices pour créer des formulaires ? Quelles sont les astuces pour les novices pour créer des formulaires ? Mar 21, 2024 am 09:11 AM

Nous créons et éditons souvent des tableaux dans Excel, mais en tant que novice qui vient d'entrer en contact avec le logiciel, comment utiliser Excel pour créer des tableaux n'est pas aussi simple que pour nous. Ci-dessous, nous réaliserons quelques exercices sur certaines étapes de création de tables que les novices, c'est-à-dire les débutants, doivent maîtriser. Nous espérons que cela sera utile à ceux qui en ont besoin. Un exemple de formulaire pour les débutants est présenté ci-dessous : voyons comment le remplir ! 1. Il existe deux méthodes pour créer un nouveau document Excel. Vous pouvez cliquer avec le bouton droit de la souris sur un emplacement vide du fichier [Bureau] - [Nouveau] - [xls]. Vous pouvez également [Démarrer]-[Tous les programmes]-[Microsoft Office]-[Microsoft Excel 20**] 2. Double-cliquez sur notre nouvel ex

Comment désactiver la fonction commentaire sur TikTok ? Que se passe-t-il après avoir désactivé la fonction de commentaire sur TikTok ? Comment désactiver la fonction commentaire sur TikTok ? Que se passe-t-il après avoir désactivé la fonction de commentaire sur TikTok ? Mar 23, 2024 pm 06:20 PM

Sur la plateforme Douyin, les utilisateurs peuvent non seulement partager leurs moments de vie, mais aussi interagir avec d'autres utilisateurs. Parfois, la fonction de commentaire peut provoquer des expériences désagréables, telles que de la violence en ligne, des commentaires malveillants, etc. Alors, comment désactiver la fonction commentaire de TikTok ? 1. Comment désactiver la fonction de commentaire de Douyin ? 1. Connectez-vous à l'application Douyin et accédez à votre page d'accueil personnelle. 2. Cliquez sur « I » dans le coin inférieur droit pour accéder au menu des paramètres. 3. Dans le menu des paramètres, recherchez « Paramètres de confidentialité ». 4. Cliquez sur « Paramètres de confidentialité » pour accéder à l'interface des paramètres de confidentialité. 5. Dans l'interface des paramètres de confidentialité, recherchez « Paramètres des commentaires ». 6. Cliquez sur « Paramètres des commentaires » pour accéder à l'interface de configuration des commentaires. 7. Dans l'interface des paramètres des commentaires, recherchez l'option « Fermer les commentaires ». 8. Cliquez sur l'option « Fermer les commentaires » pour confirmer les commentaires de clôture.

Guide de démarrage de VSCode : une lecture incontournable pour les débutants afin de maîtriser rapidement les compétences d'utilisation ! Guide de démarrage de VSCode : une lecture incontournable pour les débutants afin de maîtriser rapidement les compétences d'utilisation ! Mar 26, 2024 am 08:21 AM

VSCode (Visual Studio Code) est un éditeur de code open source développé par Microsoft. Il possède des fonctions puissantes et une prise en charge riche des plug-ins, ce qui en fait l'un des outils préférés des développeurs. Cet article fournira un guide d'introduction aux débutants pour les aider à maîtriser rapidement les compétences d'utilisation de VSCode. Dans cet article, nous présenterons comment installer VSCode, les opérations d'édition de base, les touches de raccourci, l'installation du plug-in, etc., et fournirons aux lecteurs des exemples de code spécifiques. 1. Installez d'abord VSCode, nous avons besoin

See all articles