考えてみようスフィンクスは、ポリゴンの検索にきれいなインターフェースを提供するために何も構築されていませんが、確かにその機能を使用することは可能です。
SphinxQL SELECT
句を生成し、それに応じてフィルタ処理したり、AttributesPane
を使用してカスタム属性にアクセスしたりできます。次のコードでは、うまくいけば明らかです:IRBやRailsのコンソールでこれを実行しているときに最初の文の終わりに
search = Model.search("foo",
:select => "*, CONTAINS(GEOPOLY2D(...), ...) AS inside",
:with => {:inside => true}
); ""
search.context[:panes] << ThinkingSphinx::Panes::AttributesPane
search.collect { |instance| instance.sphinx_attributes["inside"] }
; ""
のみが必要とされている - あなたがするまで結果を評価方法で
search
を呼び出さないようにしたいですペインを追加しました。通常、検索結果は遅延ロードされますが、IRBは
inspect
を呼び出して文の結果を出力し、遅延の利点を取り除きます。
ペインはa blog post I wroteで議論されており、AttributesPaneクラスのソースコードは非常に簡単です。独自のオプションを使用するカスタムミドルウェアクラスを作成し、ポリゴンファンクションに変換することもできます。Geographerクラス(これは:geo
をGEODIST
に変換するものです)を参考にしてください。
出典
2017-03-17 10:06:39
pat
ありがとうございます。私はTSをより良いプラットフォームにするための努力を本当に感謝しています。 私は既にミドルウェアに関するブログ記事を読んでいます。私はソースコードを調べて、 'geodist'のようなポリゴンを使用する方法がまったくないということに気付かなかったので、上記の方法を使って一時的に機能させました。 –
私は上記のような動的な属性についても知りたかったのです。だから両方の質問が解決されました。提案として、上記の動的属性とポリゴンベースの検索を使用する方法については、sphinxのドキュメントのセクションを参照してください。 私はそれを見つけるためにドキュメント全体を読んでいますが、見つけられませんでした。 再度お返事ありがとうございます –