1

私は Solr の初心者で、Solr(3.6) package( apache-solr-3.6.0.tgz) のサンプル フォルダーにあるサンプルを試していました。サーバーを起動し、サンプルのxmlファイルを投稿したところ、example/exampledocs検索できるようになり、Solr が一致を返し、すべて問題ありませんでした。しかし、その後、10,000 を超えるドキュメントを含む別の xml ファイルを投稿しようとしました。ファイルを変更しexample/solr/conf/schema.xmlて xml ファイルのフィールドを追加し、サーバーを再起動して xml ファイルを投稿しました。Solr 管理パネル ( http://localhost:8983/solr/admin/stats.jsp) で統計を確認したところ、numDocs : 10020. これは、伝票が正常に転記されたことを意味します。しかし、投稿されたドキュメント (10,000 ドキュメントの xml ファイルから) に存在するものを検索すると、0 の結果が返されます。example/exampledocsただし、Solr は、既定でフォルダーにあるドキュメントのコンテンツと一致する検索結果を返すことができます。私はここで何が起こったのか分かりません。の値はnumDoc、xml ファイルに投稿したドキュメントがインデックス化されたことを明確に示しています。これの何が問題なのかを確認するために検査できるものは他にありますか?

Solr パッケージの例に含まれるスキーマは次のようになります。

<field name="id" type="string" indexed="true" stored="true" required="true"/>
<field name="sku" type="text_en_splitting_tight" indexed="true" stored="true" omitNorms="true"/>
<field name="name" type="text_general" indexed="true" stored="true"/><field name="alphaNameSort" type="alphaOnlySort" indexed="true" stored="false"/>
<field name="manu" type="text_general" indexed="true" stored="true" omitNorms="true"/>
<field name="cat" type="string" indexed="true" stored="true" multiValued="true"/>
<field name="features" type="text_en_splitting" indexed="true" stored="true" multiValued="true"/>
<field name="includes" type="text_general" indexed="true" stored="true" termVectors="true" termPositions="true" termOffsets="true"/>
<field name="weight" type="float" indexed="true" stored="true"/>
<field name="price" type="float" indexed="true" stored="true"/>
<field name="popularity" type="int" indexed="true" stored="true"/>
<field name="title" type="text_general" indexed="true" stored="true" multiValued="true"/>
<field name="subject" type="text_general" indexed="true" stored="true"/>
<field name="description" type="text_general" indexed="true" stored="true"/>
<field name="inStock" type="boolean" indexed="true" stored="true"/>

もっと....

私が投稿したxmlファイルのスキーマには、タイトル、説明、価格など、上記のスキーマと共通するフィールドがいくつかあったので、残りのフィールドをschema.xmlに次のように入力しました

<field name="cid" type="int" indexed="false" stored="false"/>
<field name="discount" type="float" indexed="true" stored="true"/>
<field name="link" type="string" indexed="true" stored="true"/>
<field name="status" type="string" indexed="true" stored="true"/>
<field name="pubDate" type="string" indexed="true" stored="true"/>
<field name="image" type="string" indexed="false" stored="false"/>
4

1 に答える 1

6

Solr サンプル サイトのデフォルト設定を使用している場合df、リクエスト ハンドラの solrconfig.xml ファイルの/select設定により、デフォルトの検索フィールドがフィールドに設定されtextます。

<requestHandler name="/select" class="solr.SearchHandler">
   <!-- default values for query parameters can be specified, these
        will be overridden by parameters in the request
    -->
   <lst name="defaults">
     <str name="echoParams">explicit</str>
     <int name="rows">10</int>
     <str name="df">text</str>
   </lst>
  ....
 </requestHandler>

フィールド定義のすぐ下にある schema.xml ファイルを見ると、copyField特定のフィールドからフィールドに値を移動しtext、デフォルトのフィールド設定を介して検索可能にする複数の設定が表示されます。タイトル フィールドでの検索の例ではSony、copyField ステートメントを見ると、フィールドがデフォルトの検索フィールドtitleにコピーされていないことがわかります。textしたがって、Sony タイトルの値を持つドキュメントはクエリで返されません。

次のことをお勧めします。

  1. 次のように指定してクエリを試してみてくださいtitle:Sony。期待どおりの結果が返されるはずです。
  2. titleフィールドをデフォルトのクエリ フィールドに含める場合は、次の copyField ステートメントを schema.xml ファイルに追加し、10000 ドキュメント ファイルをリロードします 。<copyField source="title" dest="text">

これが役立つことを願っています。

于 2012-04-30T00:31:57.667 に答える