6

最近solrをインストールしました。サンプルインデックス(apache-solr-#。#。#\ example \ solrにあります)は機能しているようで、solrホームディレクトリにコピーすると、管理ページからアクセスできるようになります。ただし、schema.xmlのコンテンツを(ここから取得)に置き換えて新しいインデックスを実装しようとすると、次のようになります。

<?xml version="1.0" encoding="UTF-8" ?> 
  <schema name="example" version="1.2">
  <types>
      <fieldType name="string" class="solr.StrField" sortMissingLast="true" omitNorms="true" /> 
      <fieldType name="int" class="solr.TrieIntField" precisionStep="0" omitNorms="true" positionIncrementGap="0" /> 
      <fieldType name="date" class="solr.TrieDateField" omitNorms="true" precisionStep="0" positionIncrementGap="0" /> 
      <fieldType name="text" class="solr.TextField" positionIncrementGap="100">
          <analyzer type="index">
              <tokenizer class="solr.WhitespaceTokenizerFactory" /> 
              <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" /> 
              <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1" /> 
              <filter class="solr.LowerCaseFilterFactory" /> 
              <filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt" /> 
          </analyzer>
        <analyzer type="query">
          <tokenizer class="solr.WhitespaceTokenizerFactory" /> 
          <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true" /> 
          <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" /> 
          <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1" /> 
          <filter class="solr.LowerCaseFilterFactory" /> 
          <filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt" /> 
        </analyzer>
      </fieldType>
      </types>
  <fields>
      <field name="fileid" type="int" indexed="true" stored="true" required="true" /> 
      <field name="doctext" type="text" indexed="true" stored="false" required="false" /> 
      <field name="title" type="text" indexed="true" stored="false" required="false" /> 
      <field name="datecreated" type="date" indexed="true" stored="false" /> 
  </fields>
  <uniqueKey>fileid</uniqueKey> 
  <defaultSearchField>doctext</defaultSearchField> 
  <solrQueryParser defaultOperator="OR" /> 
  </schema>

構成エラーが発生しました。これは、uniqueKeyFieldをStrFieldタイプで実装する必要があることを示唆しているようです(実際には信じがたいことですか?)):

"HTTPステータス500-solr構成の重大なエラー。...org.apache.solr.common.SolrException:QueryElevationComponentでは、スキーマに、org.apache.solr.handler.component.QueryElevationComponent.inform(でStrFieldを使用して実装されたuniqueKeyFieldが必要です。 QueryElevationComponent.java:157)at org.apache.solr.core.SolrResourceLoader.inform(SolrResourceLoader.java:508)at ... "

私のグーグルはほとんど役に立たなかったので、この問題に遭遇したか、それを解決する方法についていくつかのアイデアを持っているかもしれない誰かがこのあたりにいるかもしれないと思っていますか?

アドバイスをよろしくお願いします、Bea。

4

2 に答える 2

11

はい、現時点では、QueryElevationComponent には文字列の一意のキーが必要です。この制限は、Solr wiki に記載されています

プロジェクトJIRAの問題は次のとおりです。

于 2010-09-02T23:52:56.503 に答える
-2

まだ答えを探している場合は、

schema.xml に、次を含めます。

<fieldType name="uuid" class="solr.UUIDField" indexed="true" /> 
<field name="id" type="uuid" indexed="true" stored="true" default="NEW" /> 

elevate.xml では、この ID を使用して、検索用語を最良の結果にマッピングします。

<elevate>
 <query text="foo bar">
  <doc id="4602376f-9741-407b-896e-645ec3ead457" />
 </query>
</elevate>

これは、最善4602376f-9741-407b-896e-645ec3ead457策ドキュメントの「id」フィールドの値です。願い、Solrでは、elevate.xmlで指定するためにemployeeidまたはproductidなど、任意の主キーフィールドを指定できます

于 2011-03-02T08:53:46.563 に答える