Question

Je construis un petit moteur de recherche sur le Web pour la recherche d'environ 1 million de pages web et je veux savoir quelle est la meilleure façon de construire l'index inversé? en utilisant le SGBD ou Qu'est-ce que ...? de nombreux points de vue tels que le coût de stockage, les performances, la vitesse d'indexation et de recherche? et je ne veux pas utiliser un projet open source pour que je veux faire mon propre un!

Était-ce utile?

La solution

Peut-être que vous pourriez vouloir préciser pourquoi vous ne souhaitez pas utiliser des outils F / OSS comme Lucene ou Sphinx.

Autres conseils

La plupart des gestionnaires actuels de la base de données dont les sources n'ont une sorte de capacité d'indexation en texte intégral. Compte tenu de sa popularité, je suppose que la plupart ont également des filtres pré-écrit pour HTML si la recherche de quelque chose comme <p> ne donnera pas 1000 résultats pour chaque page Web.

Si vous voulez faire le travail tout seul, filtrer le HTML est probablement le plus dur unique. A partir de là, un index inversé prend beaucoup de traitement de texte, et produit un grand résultat, mais il est fondamentalement assez simple - vous suffit de scanner à travers tous les documents, et de construire une liste de mots et de leurs emplacements (généralement après filtrage extrêmement commun des mots comme « un », « un », « et », etc., qui ne sera pas des termes de recherche significatifs), puis mettre les tous ensemble dans un grand index.

Compte tenu de la taille de l'index complet, il est souvent utile d'ajouter un second indice de niveau qui est assez petit que vous pouvez être sûr qu'il va facilement dans la mémoire réelle (par exemple limiter à quelques centaines d'entrées environ). Un très petit (mais un peu inefficace) la version va juste par les premières lettres de mots, de sorte que les « A » les mots commencent à 0, « B » à 12 345, « C » à 34 567, et ainsi de suite. Ce n'est pas très efficace si - vous obtenez beaucoup plus de mots commençant par « A » que par « X », par exemple. Il est plus efficace de construire votre index, puis choisissez quelques centaines (ou autre) des mots qui sont espacés uniformément dans l'indice. Utilisez ensuite que votre index de premier niveau. En théorie, vous pourriez obtenir beaucoup plus complexe, comme quelque chose comme un arbre B +, mais qui est généralement surpuissant - sur un million de documents, il est probable que vous vous retrouverez avec moins de cent mille mots qui sont utilisés assez souvent faire beaucoup de différence à la taille de l'index. Même à cela, un certain nombre des bulletins de participation seront des choses comme des fautes de frappe, pas de vrais mots ...

Je pense que ce livre a votre réponse si vous cherchez encore pour elle.

http://nlp.stanford.edu/IR-book/ information recherche-book.html

Vous pouvez commencer avec Hadoop. Il distribuera votre bâtiment d'index efficacement sur le cluster. Vous pouvez utiliser une langue pour elle. Java et Python sont recommandés. En utilisant Hadoop / MapReduce, vous pouvez facilement indexer vos pages web. Mais ils devront être mis en cache / stockés sur un disque et vous auriez besoin d'un analyseur / tokenizer pour extraire le texte d'abord. Il y a des parseurs librement disponibles sur le net. Vous pouvez commencer à partir d'ici si vous voulez le faire manuellement. Une fois que vous avez un index, puis le ranger est une autre tâche.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top