2017-03-17 15 views
0

リアルタイムインデックス作成のためにセットアップスフィンクスを設定しました。とてもうまく動作し、ジオディストでも検索します。しかし、ポリゴン内のレコードを検索したいと思います。Thinking Sphinxを使ってスフィンクスのポリゴンを検​​索する

スフィンクスのドキュメントは、今私が考えてスフィンクスを使用してこの機能を使用するには非常によくGeo-distance searching

でそれを説明しています。 考えているスフィンクスについて説明していますジオディスト検索Here しかし、ポリゴン内の検索方法は記載されていません。

ここで私を助けることができますか?

答えて

1

考えてみようスフィンクスは、ポリゴンの検索にきれいなインターフェースを提供するために何も構築されていませんが、確かにその機能を使用することは可能です。

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クラス(これは:geoGEODISTに変換するものです)を参考にしてください。

+0

ありがとうございます。私はTSをより良いプラットフォームにするための努力を本当に感謝しています。 私は既にミドルウェアに関するブログ記事を読んでいます。私はソースコードを調べて、 'geodist'のようなポリゴンを使用する方法がまったくないということに気付かなかったので、上記の方法を使って一時的に機能させました。 –

+0

私は上記のような動的な属性についても知りたかったのです。だから両方の質問が解決されました。提案として、上記の動的属性とポリゴンベースの検索を使用する方法については、sphinxのドキュメントのセクションを参照してください。 私はそれを見つけるためにドキュメント全体を読んでいますが、見つけられませんでした。 再度お返事ありがとうございます –

関連する問題