0

私は自分の組織でsolrを動作させるために取り組んでいます。Tomcat 6 でマルチコア solr 3.6 としてセットアップされます。

ここまでで、レコードの特定のフィールドを受け入れるようにサンプルの schema.xml を変更しました。レコードは問題なく、すべてのレコード ( ?q=*:*) に対してクエリを実行すると、すべてが返されます。しかし、レコードに絶対に含まれる特定の用語 (?q=greenまたは など?q=product_description:green) を照会すると、結果が表示されません。ただし、ipod_video.xml や ipod_other.xml などのデフォルトのサンプル ドキュメントをいくつか挿入すると、検索するとそれらのレコードが表示されます (例:?q=ipodまたは?q=video) 。

新しいフィールドはすべて で定義さindexed=trueれているため、クエリを実行しても自分のレコードがまったく表示されない理由がわかりません。

この動作をデバッグする方法はありますか?

更新- schema.xml および solrconfig.xml の詳細を追加します。

schema.xml は、solr 3.6 に付属するデフォルトの schema.xml とほぼ同じですが、次のフィールドが追加されています

<fields>
<field name="search_title" type="text_general" indexed="true" stored="true" multiValued="true"/>
<field name="search_prefix" type="string" indexed="true" stored="true" multiValued="true"/>
<field name="search_description" type="text_general" indexed="true" stored="true" multiValued="true"/>
<field name="search_content" type="text_general" indexed="true" stored="true" multiValued="true"/>
<field name="product_date" type="date" indexed="true" stored="true" multiValued="true"/>
<field name="product_thumbnail" type="string" indexed="true" stored="true" multiValued="true"/>

<field name="product_type" type="string" indexed="true" stored="true" multiValued="false"/>
<field name="product_updatepricefunction" type="string" indexed="true" stored="true" multiValued="true"/>
<field name="tagids" type="string" indexed="true" stored="true" multiValued="true"/>
<field name="tagid" type="string" indexed="true" stored="true" multiValued="true"/>
<dynamicField name="*_tag" type="string" indexed="true" stored="true"/>
<field name="event_id" type="string" indexed="true" stored="true" multiValued="true"/>
<field name="activity_id" type="string" indexed="true" stored="true" multiValued="true"/>
<field name="activity_function_code" type="string" indexed="true" stored="true" multiValued="true"/>
<field name="search_room" type="string" indexed="true" stored="true" multiValued="true"/>
<field name="weekday" type="string" indexed="true" stored="true" multiValued="true"/>
<field name="activity_weekday" type="string" indexed="true" stored="true" multiValued="true"/>
<field name="activity_begindate" type="string" indexed="true" stored="true" multiValued="true"/>
<field name="activity_begintime" type="string" indexed="true" stored="true"  multiValued="true"/>
<field name="activity_endtime" type="string" indexed="true" stored="true" multiValued="true"/>
<field name="audience" type="text_general" indexed="true" stored="true" multiValued="true"/>
<field name="format" type="text_general" indexed="true" stored="true"   multiValued="true"/>
<field name="publish_date" type="date" indexed="true" stored="true" multiValued="true"/>
<field name="isbn" type="string" indexed="true" stored="true" multiValued="true" />
<field name="product_code" type="string" indexed="true" stored="true" required="true"/>
</fields>

<uniqueKey>product_code</uniqueKey>

solrconfig.xml からのリクエスト ハンドラは次のとおりです。

<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>
<!-- In addition to defaults, "appends" params can be specified
     to identify values which should be appended to the list of
     multi-val params from the query (or the existing "defaults").
  -->
<!-- In this example, the param "fq=instock:true" would be appended to
     any query time fq params the user may specify, as a mechanism for
     partitioning the index, independent of any user selected filtering
     that may also be desired (perhaps as a result of faceted searching).

     NOTE: there is *absolutely* nothing a client can do to prevent these
     "appends" values from being used, so don't use this mechanism
     unless you are sure you always want it.
  -->
<!--
   <lst name="appends">
     <str name="fq">inStock:true</str>
   </lst>
  -->
<!-- "invariants" are a way of letting the Solr maintainer lock down
     the options available to Solr clients.  Any params values
     specified here are used regardless of what values may be specified
     in either the query, the "defaults", or the "appends" params.

     In this example, the facet.field and facet.query params would
     be fixed, limiting the facets clients can use.  Faceting is
     not turned on by default - but if the client does specify
     facet=true in the request, these are the only facets they
     will be able to see counts for; regardless of what other
     facet.field or facet.query params they may specify.

     NOTE: there is *absolutely* nothing a client can do to prevent these
     "invariants" values from being used, so don't use this mechanism
     unless you are sure you always want it.
  -->
<!--
   <lst name="invariants">
     <str name="facet.field">cat</str>
     <str name="facet.field">manu_exact</str>
     <str name="facet.query">price:[* TO 500]</str>
     <str name="facet.query">price:[500 TO *]</str>
   </lst>
  -->
<!-- If the default list of SearchComponents is not desired, that
     list can either be overridden completely, or components can be
     prepended or appended to the default list.  (see below)
  -->
<!--
   <arr name="components">
     <str>nameOfCustomComponent1</str>
     <str>nameOfCustomComponent2</str>
   </arr>
  -->
</requestHandler>
4

1 に答える 1

1

q=<search phrase>言及されているデフォルトのフィールドから検索することを意味します。ただし、デフォルト フィールドを指定していない場合、またはデフォルト フィールド以外の特定のフィールドを照会する場合は、Solr のように照会する必要がありますq=<fieldname>:<search phrase>

Solr には、要件に応じてドキュメントのインデックス作成に使用できるさまざまなアナライザーが用意されています。こちらをご覧ください。

質問の更新後に編集

1 つ目 -デフォルトとして/select requestHandlerフィールドがtextあり、schema.xml ファイルには text という名前のフィールドがありません。

2 番目 - schema.xml ファイルで、フィールドsearch_titlesearch_descriptionsearch_contentaudienceおよびは、トークン化されたformatタイプです。text_general他のすべてのフィールドのタイプはStringです。

3rd - type のフィールドを検索Stringするには、正確な検索語句を指定するか、ワイルドカードを使用する必要があります。たとえば、ドキュメントgreenproduct_type フィールドに値がある場合、クエリq=product_type:greenは検索結果にドキュメントを表示します。green colorただし、フィールドに値がある場合product_type、クエリq=product_type:greenは何も出力しません。しかし、クエリq=product_type:green*は検索結果にドキュメントを表示します。

ここまでで、Solr に関する基本的な情報と有利なスタートを切ることができたと思います。上記のリンクから先に進んで読んでください。

于 2013-06-19T15:09:58.527 に答える