2

solr のネストされたクエリを理解しようとしていますが、構文を理解するのに問題があります。

次の 2 つのインデックス付きドキュメントがあります (特に):

<doc>
    <str name="city">Guarulhos</str>
    <str name="name">Fulano Silva</str>
</doc>

<doc>
    <str name="city">Fortaleza</str>
    <str name="name">Fulano Cardoso Silva</str>
</doc>

クエリを実行すると、次のq="Fulano Silva"~2&defType=edismax&qf=name&fl=scoreようになります。

<doc>
    <float name="score">28.038431</float>
    <str name="city">Guarulhos</str>
    <str name="name">Fulano Silva</str>
</doc>

<doc>
    <float name="score">19.826164</float>
    <str name="city">Fortaleza</str>
    <str name="name">Fulano Cardoso Silva</str>
</doc>

だから私が尋ねた場合:

q="Fulano Silva"~2 AND __query__="{!edismax qf=city}fortaleza" &defType=edismax&qf=name&fl=score

2 番目のドキュメントのスコアをもう少し上げたいのですが、実際には numFound=0 の空の結果セットが返されます。

ここで何が間違っていますか?

4

3 に答える 3

0

EDIT:あなたが言うとき q=URLでクエリを指定しています q= か、それともアプリケーションまたはSolrダッシュボードに配置された後のテキストですか?URL について話している場合は、それを機能させるためにパーセント エンコーディングを使用する必要がある場合があります。以下にそれを述べましたが、あなたから連絡がないので、もう一度言います。

やってみませんq=name:"Fulano Silva" AND city:"fortaleza"か?

別の可能性:q=_query_:"{!edismax qf='name'}Fulano Silva" AND city:"fortaleza"

ネストされたクエリに設定されている場合select?defType=edismax&q="Fulano Silva" AND _query_:"{!edismax qf='city' v='fortaleza'}"は動作するはずですが、結果と一致する方法は、クエリとインデックス作成に使用しているアナライザーnamecity. また、これらのクエリがクエリ文字列に含まれている場合は、 適切にエンコードしていることを確認してください。

これ以上お手伝いするために、クエリで何を達成しようとしているのかを知る必要があります. 次に、適切なインデックス作成が設定されていること、edismax が適切なクエリ ハンドラーであることなどを確認できます。

于 2013-11-03T05:03:11.880 に答える