問題タブ [sphinx]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
5 に答える
823 参照

search - 検索クエリがドキュメント ID のみを返す必要がある (または返さない) のはなぜですか?

新しいプロジェクトとして、e コマース サイトのシステムを構築しています。アイデアは、サプライヤーから製品をインポートし、それらをカタログに直接挿入する代わりに、すべての情報をステージング エリアに保存することです。各サプライヤーには独自のステージ (つまり、データベース内のテーブル) があり、複数のステージング領域を 1 つのエンティティ (現在は 1 つのテーブルですが、後でおそらく Sphinx または Solr に) にフラット化します。次に、マーチャンダイザーは、ステージング製品の関連フィールド (名前と説明) を検索し、一致する製品のリストを表示して、それらの製品をライブ カタログにプッシュすることを選択できます。検索では、単一のテーブル (フラット化されたステージング領域) に対してクエリが実行されます。

私のデザインでは、名前、説明、supplier_id、supplier_prod_id など、単一のフラット化されたテーブルに検索可能およびフィルター可能なフィールドのみを格納するように呼び出します。検索クエリは、一致するアイテムの ID と、使用されるクラス (supplier_id) のみを返します。製品がどのステージングエリアからのものかを識別します。

別のシニア エンジニアは、平坦化された検索テーブルに他のメタ フィールド (検索対象外) を含める必要があると考えていますが、製品をステージからライブ カタログに「プッシュ」するときに使用できます。彼はまた、クエリがこの他のすべての情報を返す必要があると感じています。

フラット化されたテーブルに検索可能なフィールドのみを持ち、検索でクラス/ID のペアのみが返されるようにすることについて、私はかなり強く感じています。 、3))。

私の推論の一部は、これにより、後でフラット化されたテーブルをデータベースから sphinx や solr などの検索サーバーに切り替えることが容易になり、検索の実装が変更されたという理由だけで残りのコードを変更する必要がなくなるというものです。

私は正しい道を進んでいますか?検索可能なフィールドのみを保持し、ID のみを返すことが重要である理由を他のエンジニアに納得させるにはどうすればよいですか? もっと具体的に言えば、なぜ検索アプリケーションはオブジェクトの ID だけを返さなければならないのでしょうか?

0 投票する
1 に答える
1101 参照

php - リスティングがある最寄りの都市を探す(ビジネス)

Sphinxにはすでに2つのデータソースがあります。

PHP Sphinx APIを使用して、名前で一致する都市を検索し、緯度/経度から25マイル以内のリストを問題なく検索しましたが、今度はそれらに「参加」する必要があります...できること:

a)名前で都市を検索する場合は、25マイル以内にリストがある都市のみを返します。b)1つの都市(緯度/経度がわかっています)の結果を表示している場合は、25マイル以内にリストがある最も近い3つの都市をプルします。そのうちの

これらの2つのルックアップを実行するために単一のスフィンクス検索を構築する方法はありますか?

以下のコメントチェーンに基づいて編集します。

都市テーブルを更新して、Pointタイプのフィールドポイントを含め、その上に空間インデックスを作成しました。

しかし、緯度/経度データからポイントを作成するためにデータを更新しようとすると、エラーが発生します。

私の構文はここから外れていますか、それとも他の問題が発生していますか?

0 投票する
1 に答える
1361 参照

php - sql_attr_multi 属性の値がないドキュメントを検索する (Sphinx)

私のスフィンクスソース構成には、次のような属性があります。

sphinx インデックスをクエリすると、カテゴリ属性を持たないレコードのみを取得できますか? 厄介な修正として、データベースに対してクエリを実行して、潜在的なカテゴリ ID をすべて検索し、これらの属性を Sphinx の結果から除外しました。

これはうまくいきますが、もっと良い方法があるはずです。

0 投票する
2 に答える
367 参照

mysql - 結果を mysql に投げるスパイダー

サイト検索に Sphinx を使用しようとしていますが、私のサイトのすべてが mysql にあるわけではありません。車輪を再発明するのではなく、Sphinx がそれをインデックス化できるように、発見を mysql データベースに簡単に投げ込むオープンソースのスパイダーがあるかどうかを考えてみてください。

アドバイスをありがとう。

0 投票する
4 に答える
7959 参照

mysql - auto_incrementIDを使用しないSphinx

私は現在、別々のソースからのさまざまなデータを使用して大きなデータベース(200万行以上)を作成することを計画しています。レプリケーションとの同期の問題を防ぐために、auto_increment idを中心にデータベースを構築することは避けたいと思います。また、挿入される各アイテムには一意であることが保証されている英数字の製品コードが含まれるため、代わりにそれを使用する方が理にかなっているようです。

私は、このデータベースにインデックスを付けるための検索エンジンを探しています。Sphinxは、リレーショナルデータベースのインデックスを作成するように設計されているため、かなり魅力的に見えます。ただし、さまざまなチュートリアルやドキュメントを見ると、データベース設計が何らかの形でauto_incrementフィールドに依存していることがわかり、ドキュメントIDは32/64ビット整数のみである必要があるというかなり大胆なステートメントがあります。

IDとしてauto_incrementフィールドを使用せずにSphinxによってデータベースのインデックスを作成する方法はありますか?

0 投票する
4 に答える
1374 参照

php - php、中国語とロシア語で検索

最終的には、英語、ロシア語、中国語の 3 つの言語で Web サイトを作成しています。アプリケーションやデータベースでUTF-8を使えば、入出力に問題が無いといいのですが(ありますか?)

しかし、最も恐ろしいのは検索です。それは十分にクールでなければなりません。それは全文であるべきであり、インデックスなどであるべきです.形態学を理解し、ステミングを使用することなどを願っています.

まず、Zend_Search_Lucene を調べましたが、http://framework.zend.com/issues/browse/ZF/component/10021からわかるように、中国語に問題があります。:(

今、私はスフィンクスについて考えています。英語とロシア語の両方のステミングをサポートしています。中国語でどれだけうまくいくかはわかりませんし、中国語のサポートを追加するのがどれほど難しいかわかりません. http://www.sphinxsearch.com/forum/view.html?id=1554は明るい兆しですが、経験豊富な Sphinx ユーザーではないので、そこに書かれていることが理解できないと思います。


そう、

そのような「言語にとらわれない」検索の経験があり、それを私と共有できる人はいますか?

そして、検索をテストするために何かをくれませんか。英語の基本的な知識があるロシア語のネイティブ スピーカーとして、ロシア語と英語の両方の検索を自分でテストできますが、この中国語の写真のどの部分が単語であるかさえわかりません。インデックスに入れるための中国語の文字列と、期待される結果が得られるクエリをいくつか教えてください!

0 投票する
2 に答える
2801 参照

python - django-sphinxでSphinxインデックスを自動的に再構築するにはどうすればよいですか?

django-sphinxをセットアップしただけで、うまく機能しています。モデルを検索して、すばらしい結果を得ることができるようになりました。1つの問題は、indexerコマンドを使用して手動でインデックスを作成する必要があることです。つまり、新しいコンテンツを追加するたびに、コマンドラインを手動で押して検索インデックスを再構築する必要があります。それは受け入れられません。

インデクサーコマンドを頻繁に自動的に実行するcronジョブを作成することもできますが、それは最適とは言えません。cronが再度実行されるまで、新しいデータはインデックスに登録されません。さらに、私のサイトにはデータが頻繁に追加されていないため、インデクサーはほとんどの場合不必要に実行されます。

検索可能なdjangoモデルにデータが追加または変更されるたびに、Sphinxインデックスが自動的に再構築されるように設定するにはどうすればよいですか?

0 投票する
1 に答える
15010 参照

mongodb - データソースとしてmongodbでスフィンクス検索を使用する

一部の Web アプリケーションには (mysql の代わりに) mongodb を使用することにしましたが、mongodb に格納されているすべてのデータのインデックス作成/検索には sphinx を使用したいと考えています。mongodb object-id はデフォルトではハッシュであるため、これを維持したいと考えていますが、sphinx の使用には 1 つの問題があります。スフィンクスのドキュメントにあるように:

すべてのドキュメント ID は、一意の符号なしのゼロ以外の整数 (ビルド時間の設定に応じて 32 ビットまたは 64 ビット) でなければなりません。

それで...この問題を解決する最良の方法は何ですか...どのようにmongodb object-idをゼロ以外の整数に(そして元に)マッピングできますか?

アップデート

ケーシーの答えは正しい方向ですが、現在の開発バージョンでは文字列属性がSQLデータソースでのみ利用可能であることが判明しました。xmlpipe の場合、チェックアウト ソースにパッチを適用する必要があります。詳細については、sphinx フォーラムを参照してください。

0 投票する
2 に答える
1246 参照

mysql - スフィンクスと一対多の関連付け

私が見たスフィンクス検索の例では、実際には結合を使用していません。このようなスキーマがあった場合 (1 つの本に複数のレビューがあります)、

レビュー内の単語を検索して対応する本を返すには、どのようなクエリを sphinx に与える必要がありますか。通常の内部結合を使用すると、各レビューは 1 つのドキュメントになり、サイトに表示される内容とは一致しません (1 つのページに書籍情報とすべてのレビューが含まれます)。

何を指示してるんですか?検索ドキュメント用の非正規化テーブルを作成し、レンダリングされたページを入力として使用する必要がありますか?

本やレビューを変更するたびにこれを変更しますか?

0 投票する
1 に答える
706 参照

ruby-on-rails - スフィンクスは古い結果を返しています

環境:

Memcached、Rails 2.2.2 + cache_money、Sphinx+思考スフィンクス

次の結果は古い結果になります。-
レコードを追加します。mysqlには正しいデータが含まれています
-レコードはおそらくこの時点でメモリにキャッシュされてい
ます-re -indexsphinx
-sphinxは正しいデータで適切な結果を返します
-レコードを編集します-
キャッシュは適切に無効化され、mysqlには正しい更新されたデータが含まれます
-スフィンクスのインデックスを再度作成します
-スフィンクスは古くなっています

sphinxのインデックスの再作成、memcachedのクリア、疑わしいレコードの編集はすべて効果がありません。キャッシュレイヤーをまとめて無効にする(cache_moneyとmemcached)も効果がありません。