2

本のテーブルにインデックスを付けているとします。タイトル、著者、説明などがあります。

すべてのフィールドを検索して、検索用語を含む本のタイトルを返したいと考えています。検索を実行して Sphinx から book_id (doc_id) を返すことができるので、自分で調べることができますが、Sphinx がタイトルを教えてくれただけで、データベースにアクセスする必要がまったくない場合、本当に素晴らしいことです。Sphinx にさまざまな属性を返させることはできますが、テキスト フィールドを取得することはできません。

これは可能ですか?もしそうなら、どのようにしますか?

[更新] 今日これを見つけました: http://www.sphinxsearch.com/faq.html#row-storage

4

4 に答える 4

3

あるトリックがあります。に答えたように、取得したいこれらの列をattrエントリに追加してから、sphinx の結果から値を選択するだけです。

お役に立てますように :D

于 2012-08-16T10:06:26.240 に答える
1

テキスト フィールドに少量のデータがある場合は、Sphinx 文字列属性を使用できます。

sql_attr_string

ただし、次のような制限があります。

文字列属性は、すべてのドキュメントに添付された任意の文字列を格納できます。値ごとに 4 MB の固定サイズ制限があります。また、searchd は現在、すべての値を RAM にキャッシュします。これは追加の暗黙の制限です。

したがって、すべての属性が RAM に保存されるため、大量のデータをそれらに保存することはお勧めできません。

于 2013-01-18T12:01:23.810 に答える
0

すぐにアイデアを台無しにするのは嫌ですが、それは不可能です。Sphinx は、フィールドの値に関する情報を返しません。また、どのフィールドがクエリで一致したかについての情報も返しません。

もう少し詳しく説明すると... Sphinx は通常、すべての属性値をメモリにロードします。これがおそらく、結果ごとにそれらを返すことに問題がない理由です。フィールドが非可逆エンコーディングで保存されているため、通常の値に変換できない可能性がありますか? しかし、それは暗闇の中での刺し傷です。

于 2009-05-12T20:50:36.213 に答える
0

この面では、いくつかの進歩がありました。これで、 SphinxSEを使用する場合、検索対象の SphinxSE テーブルをインデックスが生成されたテーブルに結合し、その方法でタイトルを取得できます。

于 2010-11-23T21:17:03.170 に答える