2011-09-17 14 views
2

私はオンラインの聖書検索プログラムを開発しています。聖書は平凡なテキストの中に約5MBのスペースを占める非常に大きな本です。私は、プログラム内にAPIを実装し、検索クエリを開発したり、独自のサーバーに聖書を保存したりすることなく、他のウェブサイトに自分の聖書検索ウィジェットやプログラムを組み込むことも可能にする予定です。大きな検索可能なテキストファイルを保存する最良の方法

これを念頭に置いて、私は最終的にプログラムを通過する適度なクエリの流れを期待しています。また、聖書に精通していない人には、テキストを書式設定する2つの方法があります。赤いテキストとイタリックの両方を含むことができます。私は赤い文字と斜体の書式と一緒に聖書を保存する方法が必要ですが、検索クエリは書式を無視することができます。

また、できるだけ高速かつ効率的(メモリとCPU使用率)である必要があります。書式設定を無視して問合せを行うことができる限り、任意の記憶形式(MySQL、JSONまたはXMLテキストファイルなど)が考慮されます。ファイルのサイズと数は問題ではないので、本や章を別々のファイルに分割することは私にとっては大丈夫です。

さらに重要な点は、複数の詩を検索できる検索方法をいくつか用意したいということです。だから、 "の検索が、神のために永遠の命を持っているのは、息子"がジョン3:16,17です。すべてのアイデアありがとう!

+0

grepを使って本当に速く検索できます。どのプラットフォームを使用する予定ですか? – galchen

答えて

2

あなたがやろうとしていることに対して正確に作られた、さまざまなオープンソース文書検索エンジンがあります。 Solr、Elastic Search、Xapian、Whoosh、Haystack(Django製)などがあります。 S.Oには他の投稿があります。他のものと別のものを使用する利点がありますが、あなたの要件は十分に単純であり、いずれも罰金ではありません(プロジェクトを離れるときは最小限の労力で簡単に拡張できます。だから、その例を見て、どれがあなたに最も直観的に見えるかを見てください - Solrは間違いなく最も人気があり、私が扱った唯一のものですが、Elastic Searchは同じ人気のあるLuceneバックエンドを使用しています。走っているので、私はそこから始めます。

実際の実装では、単一の詩(または詩の番号)が返りたいものであれば、各詩を別々の「文書」として索引付けしたいと思うでしょう。検索エンジンは、関連性に基づいて結果のランキングを処理します(通常、興味のある場合は、tf/idfアルゴリズムを使用します)。

イタリック体と赤色のテキストを扱う方法は、テキストにマークアップを入れることです(つまり、イタリック体の場合はアスタリスクを1つ、赤色の場合はアスタリスクを2つ使用します)。 - あなたが選ぶ最終的な枠組みにはもっと簡単な方法があるかもしれませんが、塩分でそれを取ってください。複数の詩の要件にまたがるクエリはより複雑ですが、答えはおそらく各節全体をドキュメントとして(またはそれに加えて、私はそれについてもっと考える必要があります)各詩に索引付けすることを伴うでしょう。

検索インデックス作成に慣れていない場合は、Elastic Searchのようなプラグアンドプレイに設計されているものでも、セットアップに時間と手間がかかりますので、絶対ににする必要がありますこれを取得してすばやく稼働させるには、すでにMySQLに精通しています。フルテキスト検索を実行することができます。しかし、それは確かに仕事のための最善のツールではありませんので、もしあなたがこれらの検索フレームワークの1つを学ぶための少しの作業を入れれば、あなたが投資しているプロジェクトであれば、後で感謝します。他の人が指摘しているように、あなたが扱っているテキストの量は過度に多いかもしれませんが、あなたが望むものと思われるテキストを検索する方法には非常に柔軟性があります。たとえば、後で他の要件を追加することは非常に簡単です(たとえば、赤いテキストの一致のみに検索を制限するなど)。

1

私は聖書が書式を持っていたことを知らなかった。それは何のために使われますか?詩の場合は、すべての詩をデータベースに保存することをお勧めします。高度に正規化された形式では、本を持つテーブル、章を持つテーブル、および節を持つテーブルがあります。各詩は、詩数と詩のテキストで構成されています。

ここでは、章にタイトルがないので、実際には数字にすぎないと思います。その場合、それを別々に保管することは愚かなので、あなたはあなたの本のテーブルと節のテーブルを持っています。各節には章番号と節番号と節のテキストがあります。私が平文であると考えるテキストはそうではありませんか?

詩がプレーンテキストの場合は、MySQLに保存してFULLTEXTインデックスを作成することで簡単に検索可能にすることができます。そうすれば、非常に効率的に検索し、ワイルドカードなどを使用することさえできます。

詩に書式が設定されていた場合は、検索用のプレーンテキストと表示用の書式付きテキストの2つの列を作成することができます。

PS:5 MBのテキストは実際には何もありません。専用のプログラムを入手した場合は、メモリに1つの文字列で保存し、strposまたは同様の機能を使用してテキストを検索することができます。どの言語、データベース、プラットフォームを使用していますか?

+0

私はLAMPサーバーを使用しています。私はPHPでプログラミングしており、MySQLは使用するのに最適なデータベースです。プレーンテキストバージョンとフォーマットされたバージョンを保存するあなたのアイデアはうまくいくはずです。私はそれをすることを決して考えなかった。私が話している「書式」はキリストの言葉が赤で、イタリック体の言葉がキング・ジェームズの版です。 –

関連する問題