30

これまでの話:

検索バックエンドとして Xapian を使用することに決めました。Xapian には、私が探していたすべての検索エンジン機能があり、Unicode とステミングについて知っており、依存関係がほとんどなく、その上に肥大化したアプリ サーバーをインストールする必要がないためです。

Django と Haystack (さらに xapian-haystack、Haystack を Xapian に結び付けるためのバックエンド グルー コード) を試してみました。動作しませんでした。django-haystack プロジェクトも xapian-haystack プロジェクトも、実際に連携して動作するバージョンの組み合わせを提供していません。両方のプロジェクトの MASTER は Xapian からエラーを生成するため、まったく安定していません。Haystack 1.0.1 と xapian-haystack 1.0.x/1.1.0 は API 互換ではありません。さらに、Haystack 1.0.1 と xapian-haystack MASTER の最小限の作業インストールでは、django-haystack または xapian-haystack のいずれかでエラーが発生するため、複雑なクエリを実行しても結果はゼロになります (私はこれを二重に検証しました)。実際には非常に単純なケースをテストし、エッジケースはまったくテストしません。

ジャピアンをやってみた。ソースコードはスペルミスでいっぱいです (コメントではなく、変数名に注意してください)。ドキュメントもあいまいさと古い情報でいっぱいで、インストールが機能することはありません。当然のことながら、ユーザーが機能について尋ねることはめったにありませんが、そもそもそれを機能させる方法について尋ねます。

次に、Solr (Java 環境と Tomcat をインストールすると頭痛がします。マシンには RAM と CPU の制約があります)、または Lucene (頭痛は少し軽減されますが、それでも) を調べます。

宣伝どおりに機能するかどうかわからないソリューションにさらに時間を費やす前に、知りたいことがあります: Django で実際に動作する実際の検索ソリューションを手に入れた人はいますか? 私は真剣です。「大部分が解決された大きな問題」について読んでいて、実際には、これらの「ほとんど解決された問題」を扱っているすべてのブロガーが基本的なインストールを通過したことがないため、ソースコードから機能するインストールを取得できないことに気付くのは本当にイライラします公式チュートリアルをコピペ。

したがって、要件は次のとおりです。

  • 1 回のクエリで 10 ~ 100 語を検索できる必要があります
  • + (用語が存在する必要がある) および - (用語が存在してはならない)、AND/OR を処理する必要があります。
  • 任意のグループ化を処理する必要があります (つまり、AND/OR を囲む括弧)
  • 全文検索の前または後に Django-ORM フィルタリングを許可する必要があります (つまり、Django が認識しているフィルターの完全なセットを使用した結果の前処理/後処理)
  • または、結果セットを一括フェッチして QuerySet に変換する機能が必要です。
  • マシン上で軽くする必要があるため、巨大な JVM および Java ベースのアプリサーバーをインストールしないことが望ましい

これを行うものはありますか?事例証拠や、それが機能するはずだと主張するブログ投稿への言及には興味がありません。現実の世界で、実際の条件の下で、実際のクエリを使用して、完全に機能するセットアップを実際に持っている人から聞いてみたいです。

編集:

繰り返しますが、誰かが、どこかで、特定されていないプロパティで動作するインストールを実行しているという事例証拠にはあまり興味がありません。私はすでにそこに行き、すべてのブログ投稿、メーリング リストを読み、作成者に連絡しましたが、実際のシナリオの実際の実装に関しては、宣伝どおりに機能するものはありませんでした。

また、以下のユーザーもその点を指摘しましたが、プロジェクトの TCO を考慮すると、ベンダーが不明な数のスペシャリストをモンキーにパラシュートで降ろした後、誰かが、どこかでそれをやってのけることができたという話には絶対に興味がありません。 -どこにも文書化されていない特定のドメイン知識でインストール全体にパッチを当てます。

したがって、本格的な検索の最小要件 (上記の要件を参照) を実際に満たしているインストールが機能していると主張する場合は、実際に問題を解決する Django の検索ソリューションの恩恵を受けることができるように、次の情報を提供してください。 :

  • 正確な Linux ディストリビューション、リリース バージョン、
  • Haystack (または同等のもの) の正確なリリース バージョンと検索バックエンドのリリース バージョン、
  • 検索エンジンの正確なリリース バージョン
  • 上記の最小要件が満たされるように、インストールがセットアップされた方法ですべてのコンポーネントを正確にセットアップする方法について、公に (!) 入手可能なドキュメント。

ありがとうございました。

4

7 に答える 7

11

xapian をサポートする Django アプリケーションもいくつか開発しました。それらの最大のものは、240 万のドキュメント (フォーラムの投稿、ウィキのエントリ、惑星のエントリ、およびブログのエントリを含む) を格納する 8G のインデックスを持つ xapian データベースを持っています。

全体的に、私は xapian にとても満足しています。それは非常によく機能し、使いやすいです。私が気に入らない唯一のことは、デッドロックのために xapian が mod_wsgi (グローバル モードを除く) で動作しないことです。そのため、fastcgi を使用する (または xapian-tcpsrv に接続するか、独自のサービスを作成する) 必要があります。

xapian-bindings を直接使用することをお勧めします。Xapian は現在、非常に多くの便利なヘルパー (TermGenerator、QueryParser など) を提供しており、インデックス作成とクエリ作成の両方を単純化しています。実際、追加のライブラリを正当化するようなイメージを作成できるものは何もありません。私の意見では、それらはすべてより複雑であり、効率的にインデックスを作成することはできません.

必要なのは、xapian がどのように機能するかをある程度理解していることだけです。(用語とは何ですか? 値とは何ですか? ステミングとは何ですか? どこで使用すればよいですか? など)。これらのトピックはすべて xapian の Web サイトで見つけることができます。これらの概念を理解するとすぐに、xapian を扱うのは簡単になります。

また、xapian API は非常に安定しています。1.0 リリースよりずっと前に使い始めましたが、API の変更やバージョンの競合で問題が発生したことはありません。変更された唯一のことは、以前 Django プロジェクト用に作成したすべてのヘルパー (クエリ パーサー、トークナイザーなど) が役に立たなくなったことです。これは、同様のクラスが xapian コアに組み込まれたためです。

要約すると、xapian-bindings を直接使用してみてください。

于 2010-03-13T07:06:28.580 に答える
9

Xapian バックエンドを使用した Django-Haystack を保証できます (完全な開示のために、私は xapian-haystack バックエンドの作成者です)。現在、いくつかのサイトで Haystack/Xapian を使用しています。最大のサイトには 20,000 人を超える登録ユーザーがおり、Xapian データベースには 143,000 を超える固有の用語を含む 20,000 以上のドキュメントがあり、合計サイズは最大 141 MB です。

Haystack と Xapian バックエンドを組み合わせて実行することができなかった点については、タグ付けを行うべきほど熱心ではなかったことを認めます。そのため、バージョンに多少の混乱があります。ただし、両方のコードベースの現在のマスターを問題なく使用できるはずです。そうでない場合は、喜んで問題を解決させていただきます。ただし、問題についてもう少し具体的に説明する必要があります。「うまくいかなかった」というだけでは十分な情報ではありません。

ダニエルと私は、Github で開かれた問題にタイムリーに対応できるよう最善を尽くしています。また、日中は #haystack IRC チャネルと django-haystack Google グループの両方で通常は利用できます。

使用したバージョン:

  • Haystack 1.0BETA と Xapian-Haystack 1.1.0BETA
  • Haystack 1.0.1FINAL と Xapian-Haystack 1.1.3BETA

Haystack でデプロイしたサイトのほとんどは、Xapian 1.0.5 で Ubuntu 8.04 LTS を実行しています。

于 2010-04-09T00:56:10.853 に答える
7

あなたが要求した詳細。

  • 正確な Linux ディストリビューション、リリース バージョン - Ubuntu 9.04 & 9.10
  • Haystack の正確なリリース バージョン (または同等のバージョン) - Haystack 1.0 およびマスター
  • 検索バックエンドのリリース バージョン - Haystack に含まれる Solr & Whoosh バックエンド
  • 検索エンジンの正確なリリース バージョン - Solr 1.3、Solr 1.4、Whoosh 0.3.15
  • 上記の最小要件が満たされるように、インストールがセットアップされた方法ですべてのコンポーネントを正確にセットアップする方法について、公開されている (!) 入手可能なドキュメント。

これを超えて、それはチュートリアルの標準構成ビットに加えて、必要に応じて (スタック オーバーフローのおかげでリンクできません) からの追加のオーバーライドです。

Haystack のメンテナーとして、私は上記の以前のセットアップのすべてを積極的に実行しています。最小の Haystack インストール (Haystack 1.0 + Whoosh) は、最大 600 ドキュメントです。少し大きいもの (Haystack マスター + Solr 1.4) は、約 4000 ドキュメントです。私が認識している最大の展開 (Haystack マスター + Solr 1.4) は、約 300 万のドキュメントです。

私は通常、スタック オーバーフローを回避しようとしているので、私から何も見えなくても驚かないでください。メーリング リストはサポートを提供するのに最適な場所ですが、これまでの回答を考えると、ここで私をゴミ箱に捨てた方がいいと思います。

于 2010-04-09T03:09:01.707 に答える
7

簡単な答え: いいえ。

私たちは救済し、Google カスタム検索を使用しました。このサイトには 10,000 を超えるページ ビューがありますが、サイトマップ フィードをメインの 4,000 ページ程度に抑えており、年間 250 ドルかかります。これは私の時間の約 2 時間です。顧客は満足し、結果に満足しています。

誰かが優れた FOSS ソリューションを考え出すのを楽しみにしていますが、商業的な状況では、TCO は経済的に理にかなっている必要があります。

于 2010-03-06T07:12:24.533 に答える
1

スフィンクスを検討しましたか?データストアとして何を使用していますか?それは素晴らしい働きをするMySQLエンジンを持っています。Django-ORMにどれだけうまく結び付けることができるか正確にはわからないことを除いて、ほとんどの要件を満たしていると思います。

350万レコードのコーパスでプレフィックスとインフィックスの検索を行う自動提案フィールドのパフォーマンスを向上させるために、自分のDjangoアプリの1つでSphinxを使用することを強く検討しています。しかし、まだ実装に取り​​掛かっていないため、Django+Sphinxの統合について話すことはできません。私の唯一のSphinxエクスペリエンスは、MySQLエンジンを使用し、MySQLに直接クエリを実行することです。

于 2010-03-08T01:47:35.350 に答える
1

私 (および私の同僚) は、Haystack を使用してかなり優れた検索機能を実現することに成功しました。

haystack と whoosh バックエンドから始めるのは簡単です。whoosh のパフォーマンスが許容できない場合は、Apache-Solr バックエンドに変更します。

それが機能するプロジェクトへのリンクを含む詳細な投稿を書くために、私たちは実際に動き回らなければなりませんでした.

今のところ、この検索をご覧になることをお勧めします: http://www.webdevjobshq.com/search/?q=Haystackと Apache-Solr バックエンドを使用して実装されたレール。またはこれ: http://www.govbuddy.com/search/?q=Roy

于 2010-03-06T07:24:09.390 に答える
0

ジャピアンを使っています。インストールは非常に簡単で、うまく機能しました。基本的なユースケースをカバーし、統合プロセス全体を示す実際のチュートリアルがあります。

はい、あいまいな部分もありますが、Issue Tracker は公開されており、作成者はバグを修正して機能を追加しています。

于 2010-03-06T16:42:30.367 に答える