0

ThinkingSphinx がいくつかのメタ データ キーワードにインデックスを付け、各オブジェクトにインデックスを付ける簡単な方法はありますか。

以下の例では、さまざまな場所からの写真を含む photos テーブルのインデックスを作成しています。

ThinkingSphinx::Index.define :photo, :with => :active_record do
  indexes title, description, continent, country, province, area
end

ここで「ブータン」などの場所を検索すると、スフィンクスがブータンに関連するすべての写真やその他のアイテムを表示してくれます。しかし、「ブータンの写真」を検索すると、キーワード「写真」は写真テーブルのアイテムと一緒にインデックス化されていないため、スフィンクスは何も返しません。

それを解決する 1 つの方法は、写真テーブルに「searchmeta」列を追加し、その列エントリに説明的なキーワードを入れることです。しかし、同じ情報が写真テーブルのすべての行に複製されるため、これは非常に高価です。この問題を回避する簡単な方法があるかどうか知りたいですか?

4

1 に答える 1

1

Barry がコメントで示唆しているように、クエリのメタデータ キーワードからその情報を取り除くことができます。これが最善の方法かもしれませんが、別のオプションとして、インデックス定義に文字列として直接追加することもできます (データベース):

ThinkingSphinx::Index.define :photo, :with => :active_record do
  indexes title, description, continent, country, province, area
  indexes "'photo photos'", :as => :metadata
end
于 2013-09-16T01:55:54.357 に答える