Apache Solr は、(1) N-Gram インデックス (完全な文字列だけでなく、部分文字列も検索します。これは、同様の結果を得るのに非常に役立ちます) を提供する優れた検索エンジンです。 (2) 距離に基づいてすぐに使えるスペル コレクターを提供しますmetric/edit distance (これは、ユーザーが「chicaog」と入力したときに「did you mean chicago」を取得するのに役立ちます) (3) すぐに使えるあいまい検索オプションを提供します (あいまい検索は、あなたのたとえば、ユーザーが GA-123 と入力すると、結果として VMDEO-123 が返されます) (4) Solr は、上記のオプションのように役立つ「More Like This」コンポーネントも提供します。
Solr (Lucene Search Library に基づく) はオープン ソースであり、ゆっくりと検索 (バーティカル) 業界のデファクトになりつつあり、データベース検索に優れています (データベース列のインデックス作成について話したように、これは Solr にとって簡単なことです)。 )。Lucene と Solr は、多くのフォーチュン 500 企業やインターネットの巨人によって使用されています。
Sphinx Search Engine も優れています (すべてのフットプリントが非常に小さく、C++ ベースであるため、私も気に入っています) が、簡単に言えば、Solr の方がはるかに人気があります。
Python のサポートと API が両方で利用できるようになりました。ただし、Sphinx は exe で、Solr は HTTP です。したがって、Solr の場合は、python プログラムから Solr URL を呼び出すだけで、レンダリングのためにフロントエンドに送信できる結果が返されます)。
ここまでは順調ですね。あなたの質問に来ます:
まず、検索エンジンが本当に必要かどうかを自問する必要があります。検索エンジンは、上記のすべてのユース ケースに適していますが、実際には、膨大な量の全文データや数百万行の表形式データを検索するために作られています。Did you Mean、Similar Records、Spell Correctors などのアルゴリズムを上に書き込むことができます。Solr でゼロ化する前に、Google で (1) Peter Norvig Spell Corrector & (2) N-Gram Indexing も検索してください。数行のコードを書くだけで、探していたものを実際に手に入れることができるかもしれません。
決めるのはあなた次第です:)