OCRedには数千ページの新聞記事があります。各ページの新聞、号、日付、ページ番号、OCRedテキストがmySQLデータベースに入れられました。
ここで、Googleのような検索エンジンをPHPで構築して、クエリで指定されたページを検索します。高速で、検索に1秒もかかりません。
どうすればいいの?
SphinxSearch を試すこともできます。 Craigslistはsphinxを使用しており、mysqlとpostgresqlの両方に接続できます。
興味深い検索エンジンがいくつかあります。 "Google like"の意味がわからないので、その部分は無視します。
すべてのファイルをGoogleドキュメントに置いて、結果を独自のWebサイトにコピーすることができます。
私の懸念は、OCRの精度が依然として問題であることです。そのため、検索要件の1つの考慮事項は、「あいまい」検索を実行する機能です。 OCRが「暑い」という単語の「帽子」を誤って認識する場合のあいまいな意味、検索エンジンは、類似しているが正確ではない結果を返すのに十分なほど賢くなります。 Oracleには、2つの文字列の類似性を比較するUTL_MATCHという関数があります。 http://docs.Oracle.com/cd/E11882_01/appdev.112/e25788/u_match.htm#ARPLS352
このような関数は役に立ちます。
Google検索アプライアンスやGoogle Enterpriseなどを試してみませんか?これにはコストがかかりますが、ホイールを再発明する必要がなくなり、「グーグルのような」検索が可能になります。
あなたのシナリオは、あなたがあなた自身を転がしたいことを示唆しています。一般的な検索エンジンの良い出発点は次のとおりです。
既製のソリューションを使用する場合:
これをチェックしてください Lucene PHPのポート:
Sphider を確認することをお勧めします。私の経験では、それは非常に高速であり、自動的に索引付けを行います。また、オープンソースであるため、コードを取得して、必要に応じて変更できます。
sqliteには非常に優れた全文検索機能があります(sqlite FTS 3/4を検索-驚くほど優れています)
単純なa PHP= diyアプローチが必要な場合は、インデックス化された用語のハッシュで分割された大量の小さなファイルを使用したインデックス作成が非常にうまく機能します。設計に注意してください(用語を検索するには、ハッシュとレコードIDに一致する用語を含む非常に小さなファイルを検索するだけで十分です。HDスペースを節約したい場合は、ビット配列スライスを使用してレコードIDを表すことができます)。 。しかし、フルテキストに対してすべてのWordのインデックス作成を行うと、phpでは遅くなります..その部分は実際にはcで行う必要があります
「ファジー」検索の場合、メタフォンハッシュの使用を検討することになります。
事前構築されたフルテキストツールについては、sqlite FTS 3/4(sqliteは非常に優れたフルテキスト検索機能を備えています!)、Sphinx、kinoSearch(kinoSearchはLuceneに少し似ていますが、バックエンドは素敵なPerlラッパーを備えています- cLuceneもありますが、それでもまだプレアルファだと思います)
Java Lucene(またはJavaベースの何か)は、JVMを実行するために脇に置くために多くのRAMを必要とするでしょう-予算に余裕があるならおそらくそれほど大きくはありません。