1

私は約1週間solrで遊んでいます。私の問題は、ここSOまたはインターネット上のどこでも解決策を見つけることができなかったため、ハイライトに関連するまれなケースである可能性があります。

ハイライトを有効にしましたが、ほとんどすべてが正常に機能します。検索結果が表示され、ハイライトされた部分がに返され<lst name="highlighting">ます。

問題は、テキストの強調表示された部分を実際に含む子ノードのいずれにも、それぞれの結果項目のid属性と同じであると想定されるname属性がないことです。

以下は、solradminを使用した検索から返された結果からの抜粋です。

<result name="response" numFound="121" start="0" maxScore="2.3798883">
   <doc>
     <float name="score">2.3798883</float>
     <str name="Turn">Android Linux</str>
     <str name="id">dcc190ba-143b-4fb7-b868-ef06875210fe</str>
     <float name="startTime">961.98</float>
   </doc>
   <doc>
     <float name="score">1.009701</float>
     <str name="Turn">
       ci sono per� degli aspetti diversi perch� Microsoft vendeva windows mentre l' Ugl     regala Android che quindi la licenza Android non costa nulla
    </str>
    <str name="id">804df3fb-3709-4bf8-a0d0-718dc5da18f1</str>
    <float name="startTime">2445.19</float>
  </doc>
</result>
<lst name="highlighting">
  <lst>
    <arr name="Turn">
      <str><span class="highlight">Android</span> Linux</str>
    </arr>
  </lst>
  <lst>
   <arr name="Turn">
     <str>ci sono per degli aspetti diversi perch Microsoft vendeva windows mentre l' Ugl     regala <span class="highlight">Android</span>
     </str>
   </arr>
  </lst>
  <lst>
    <arr name="Turn">
     <str><span class="highlight">Android</span> nd Kappa e l' ambiente che ci permette di     scrivere in codice in attivo
     </str>
    </arr>
  </lst>
</lst>

ご覧のとおり、id属性は結果ごとにあります。ノードで使用されていないだけです。

solrによって自動的に生成されるIDにuuidタイプを使用しています。

これが私のschema.xmlファイルの一部です。

<field name="id" type="uuid" indexed="true" stored="true" required="true" default="NEW"/>
<field name="startTime" type="float" indexed="true" stored="true" />
<field name="Turn" type="text_general" indexed="true" stored="true"/>

fieldType uuidは、schema.xmlファイルで次のように定義されています。

<fieldType name="uuid" class="solr.UUIDField" indexed="true" />

以下は、(solrconfig.xmlで)IDを生成する更新プロセッサーです。

 <updateRequestProcessorChain name="uuid">
   <processor class="solr.processor.SignatureUpdateProcessorFactory">
     <bool name="enabled">true</bool>
     <str name="signatureField">id</str>
     <bool name="overwriteDupes">false</bool>
     <str name="fields">*</str>
     <str name="signatureClass">solr.processor.Lookup3Signature</str>
   </processor>
   <processor class="solr.LogUpdateProcessorFactory" />
   <processor class="solr.RunUpdateProcessorFactory" />
 </updateRequestProcessorChain>

アイテム内のname属性の値としてidがないと、結果のテキストを置き換えるなど、それ以上の処理を行うことができません。この情報で十分だと思います。それ以外の場合はお知らせください。私は今2日間これの底に到達しようとしています。

乾杯。

4

2 に答える 2

2

私はあなたと同じ問題を抱えていました。唯一の違いは、新しいsolrインスタンスを開始したことです。ですから、元に戻すオリジナルはありませんでした。

idタイプを「string」に置き換え、データにカスタムの一意キーを追加することで修正しました。また、構成に一意のキー要素を追加しました。

<uniqueKey>id</uniqueKey>
<field name="id" type="string" indexed="true" stored="true" required="true" />

これで私の問題は解決しました。どういうわけか、タイプ'uuid'では機能しません。

これが同じ問題に遭遇する人に役立つことを願っています。

注:uniqueKeyフィールドは「fields」ノードの外側にある必要があります

于 2014-09-02T21:14:50.363 に答える
0

それを機能させるための別の必死の試みで、solrconfig.xmlファイルを元のファイルに置き換え、行った特定の変更のみを元に戻したところ、問題は解消されました。練習の最初の数日間に何かを追加したに違いないので、問題をいくつかの特定の行に追跡できると確信しています。

于 2012-11-30T12:59:56.493 に答える