1

私はオブジェクトを持っています

Title   : foo
Summary : foo bar
Body    : this is a published story about a foo and a bar

3 つすべてが、stored=true のフィールドとして設定されます。

ユーザーは私のシステム全体で単語を検索します

"foo"

3 つの場所すべてで foo を強調したいと思います。

ユーザーは、タイトルで単語 foo を検索します

"title:foo"

タイトル内で foo のみを強調表示したい。

クエリの一部として SOLR に追加 hl.requireFieldMatch=trueしたとき、一般的な非フィールド検索を実行すると、3 つの場所すべてで強調表示を取得できません。hl.usePhraseHighlighter=true両方のシナリオを機能させる方法はありますか?

これら 2 つの項目をオフにしましたが、たとえば、発行済み項目のみを表示する、ユーザーには表示されないクエリのフィールド化された部分を追加しています。問題は

(foo AND status:published)

ユーザーが「foo」という単語のみを検索したときに、本文で公開されている単語が強調表示されます。

4

1 に答える 1

1

これは、solr / lucene の場合よりも act_as_solr の場合の方が奇妙である可能性があります。

solr http://wiki.apache.org/solr/CommonQueryParameters#fq内で fq オプションを利用しました

クエリは次のようには見えなくなりました

(foo AND status:published)

もっと似てる

q=foo&fq=status:published

solrにヒットしたとき

fq は強調表示に影響を与えません。solr キャッシュの利点が得られるため、これを行うより良い方法のようです。

acts_as_solrで実装されていないバグ/機能がまだあり、これも利用する必要があります。

たとえば、モデルの名前が article で、ユーザーが article という単語を検索した場合、AAS は舞台裏で次のようなクエリを作成しています。

(article AND type_t:article)

これにより、記事という単語が必要のない場所で強調表示されるのと同じ問題が発生し、ユーザーが「記事」という用語を検索すると、システム内のすべてのオブジェクトが返されます。

act_as_solr の GitHub フォークをざっと見てみると、まだこれを実装している人はいません。parser_methods.rb 内に素敵な #TODO があります

于 2010-04-01T19:20:40.193 に答える