2012-04-27 13 views
1

私はSolrの初心者です。私はSolr(3.6)パッケージ(apache-solr-3.6.0.tgz)のサンプルフォルダにある例を試していました。私はサーバを起動し、サンプルxmlのファイルをexample/exampledocsに投稿してから、私はものを検索することができ、Solrは一致を返してくれました。しかし、私は1万以上のドキュメントを持つ別のXMLファイルを投稿しようとしました。 example/solr/conf/schema.xmlファイルを変更してmy xmlファイルのフィールドを追加し、サーバーを再起動してxmlファイルを投稿しました。私はSolrの管理パネル(http://localhost:8983/solr/admin/stats.jsp)で統計をチェックし、それはnumDocs : 10020を示しています。これは、文書が正常に転記されたことを意味します。しかし、投稿された文書(10,000の文書xmlファイルから)に存在するものを検索すると、0の結果が返されます。しかし、Solrはデフォルトではexample/exampledocsフォルダにあるドキュメントのコンテンツと一致する検索結果を返すことができます。私はここで何が起こったのかについて断然です。 numDocという値は、xmlファイルに投稿されたドキュメントが索引付けされていることを明確に示唆しています。 これ以外に何が問題なのかを調べることができますか?solrはドキュメントを検索しますが、検索はしません

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ファイルのスキーマあなたはSolrの例サイト、目からデフォルトの設定を使用している場合など、タイトル、説明、価格、のような上記のスキーマはので、私はこの

<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"/> 
+0

クエリとスキーマはどのようなものですか?あなたは '*:*'を検索しようとしましたか? –

+0

@MauricioScheffer私は '*:*'を検索しようとしましたが、結果タグの属性 'numfound'は' 10020'です。しかし、結果は「」の10件しか表示されません。私はタイトルや説明の中で言葉を聞きましたが、私の質問を編集してスキーマを表示します – lovesh

+0

@MauricioScheffer私は '*:*'のためにクエリを実行し、パラメータ 'start = 50'を渡しました。 xmlファイルを検索することができないのはなぜですか? – lovesh

答えて

6

のようなのschema.xml内のフィールドの残りの部分を入力し/select要求ハンドラのsolrconfig.xmlファイルのdf設定によって、デフォルトの検索フィールドが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ファイルを見ると、あなたがtextフィールドに特定のフィールドから値を移動するため、デフォルトのフィールドの設定を経由してそれらを検索可能にしている複数のcopyField設定が表示されます。 titleフィールドにSonyを検索する例では、copyFieldステートメントを見ると、titleフィールドがtextデフォルト検索フィールドにコピーされていないことがわかります。したがって、ソニーのタイトル値を持つドキュメントは、クエリで返されていません。

私は次のことをお勧めします:

  1. 以下を指定することで、クエリを試してみてください:あなたが期待しているものを返す必要がありtitle:Sonyを。
  2. titleフィールドをデフォルトのクエリフィールドに含める場合は、次のcopyFieldステートメントをschema.xmlファイルに追加し、10000ドキュメントファイルをリロードします。 <copyField source="title" dest="text">

これが役立ちます。

+0

ありがとうございました。 'title:sony'を使うと動作します。しかし、 'title'の型を' text_general'から 'text_en_splitting'に変更すると' title:sony'というクエリは再び0の結果を返します。また 'name'の型を' text_general'から 'text_en_splitting'に設定しても、私は望みの動作を得られません。 'name'フィールドに' A-DATA'が含まれていて、 'adata'を検索すると何も一致しません。これらのことが起こる理由は何ですか? – lovesh

+0

あなたは私の一日を救った。おかげでMr Cook。 –

関連する問題