2009-05-12 1 views
2

私は書籍の表を索引付けしていると仮定します。彼らはタイトル、著者、説明などがあります。スフィンクスの結果からどのように特定のフィールドを返すのですか?

すべてのフィールドを検索し、検索用語を含む書籍のタイトルを返したいと思います。私は検索をして、スフィンクスからbook_id(doc_id)を返すことができるので、私はそれを自分で見ることができますが、本当に素晴らしいのは、スフィンクスがちょうど私にタイトルをくれば、データベースをまったく打つ必要はありません。私はスフィンクスが私に別の属性を返すようにすることができますが、テキストフィールドを取得することは私を逃しています。

これは可能ですか?もしそうなら、あなたはどうやってそれをしますか?この今日の発見

[更新]:http://www.sphinxsearch.com/faq.html#row-storage

答えて

0

憎しみはそうすぐにアイデアを殺すために、それは不可能です。スフィンクスは、フィールドの値に関する情報を返さず、どのフィールドでもクエリに一致するものは返しません。

スフィンクスは通常、すべての属性値をメモリに読み込みます。これはおそらくそれぞれの結果に対して値を返すことができるからです。フィールドは非可逆エンコーディングで保存されるため、通常の値に戻すことはできません。しかし、それは暗闇の中で刺す。

0

この前面にはいくつかの進歩があります。ここでSphinxSEを使用すると、検索したSphinxSEテーブルにインデックスを作成したテーブルを結合して、タイトルを取得することができます。

3

いくつかのトリックがあります。私がbeforeと答えると、attrの項目に追加したい列を追加することができます。その結果、sphinxの結果から値を選ぶことができます。

、それはあなたのために役立つかもしれない:D

1

あなたは、あなたがスフィンクスの文字列属性を使用することができますテキストフィールドに少量のデータを持っている場合。

文字列の属性は、すべての 文書に添付任意の文字列を格納することができますように

sql_attr_string 

しかし、それはいくつかの制限があります。値ごとに4 MBの固定サイズ制限があります。また、searchd は現在RAM内のすべての値をキャッシュします。これは暗黙的な制限である です。

したがって、すべての属性がRAMに格納されているため、多くのデータを格納することは好ましくありません。

関連する問題