24

Solr ダウンロードに付属するデフォルトの Jetty サーバーを使用して、私の Ubuntu マシンで実行されている Solr インスタンスを取得しました。Solrを起動するたびに

java -jar start.jar

サーバーは正常に起動しますが、常に例外がスローされます。

INFO: SolrDispatchFilter.init() done
Apr 12, 2012 2:01:56 PM org.apache.solr.common.SolrException log
SEVERE: org.apache.solr.common.SolrException: undefined field text

前述のとおり、サーバーは引き続き起動し、Solr 管理インターフェイスが表示されます。スキーマを次のように定義しました。

<fields>
    <field name="id" type="string" indexed="true" stored="true" />
    <field name="phraseID" type="int" indexed="true" stored="true" />
    <field name="translation" type="string" indexed="true" stored="true" />
</fields>
<uniqueKey>id</uniqueKey>

また、JSON 更新を実行することもできました。受け入れられたデータのサンプル配列を送信しました。この時点までは、すべて問題ありません。

クエリを実行しようとすると:

http://localhost:8983/solr/select/?q=*:*&version=2.2&start=0&rows=10&indent=on

以前にサンプルで送信したすべてのデータが正しく返されます。

ただし、テキストを使用してクエリを実行しようとすると、HTTP ERROR 404 が表示されます。

http://localhost:8983/solr/select/?q=fruit&version=2.2&start=0&rows=10&indent=on

--- returns ---

HTTP ERROR 400

Problem accessing /solr/select/. Reason:

    undefined field text
Powered by Jetty://
4

5 に答える 5

49

私も同じ問題を抱えていました。ファイルにない場合は<defaultSearchField>、ハンドラーsolrconfig.xmlを探します。/select

その中にあなたはこのようなものを見つけるでしょう

<str name="df">text</str>

それが犯人です。dfはデフォルトのフィールドを意味し、デフォルトで、そして当然のことながら、非常に愚かなことに、text多くの人が持っていない可能性のあると呼ばれるフィールドに設定されます。

それを削除し、デフォルトの検索フィールドとなるものに置き換えます。

于 2012-08-23T15:09:26.493 に答える
38

デフォルトの solr 構成では、solr tarball に含まれるデフォルトのスキーマと一致するデフォルトを持ついくつかのリクエスト ハンドラーが定義されています。

solrconfig で定義されている要求ハンドラーを確認する <str name="qf">と、他の構成値に、スキーマで定義していないフィールドが含まれていることがわかる場合があります。

また、デフォルトの検索フィールドが次のようなテキストに設定されていないことを schema.xml で確認してください。<defaultSearchField>text</defaultSearchField>

于 2012-04-12T19:31:06.723 に答える
0

テキストフィールドは、デフォルトのschema.xmlで指定されているように(新しいドキュメントを挿入する場合)、別のフィールドのコピーで構成されます。

したがって、solrconfig.xmlにdf "text"があり、ビデオなどのsolr管理ページのフィールドを指定せずに検索を行う場合。テキストフィールド(別のフィールドのコピーで構成されています)で検索されます。

于 2012-10-02T15:55:36.583 に答える
0

上記のように 404 の回答に表示されることもあれば、jetty スタック トレースの例外として表示されることもある同じ問題があります。

重大: org.apache.solr.common.SolrException: 未定義のフィールド テキスト

   at org.apache.solr.schema.IndexSchema.getDynamicFieldType(IndexSchema.java:1330)
   at org.apache.solr.schema.IndexSchema.getFieldType(IndexSchema.java:1282)
   at org.apache.solr.search.SolrQueryParser.getWildcardQuery(SolrQueryParser.java:234)
   at org.apache.lucene.queryParser.QueryParser.Term(QueryParser.java:1414)

「コンテンツ」に設定されているdefaultSearchFieldを確認しました(これで問題ないようです)

編集: schema.xml に、テキスト型の次の定義があります (問題はありません)。

<fieldType name="text" class="solr.TextField"
    positionIncrementGap="100">
    <analyzer>
        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
        <filter class="solr.StopFilterFactory"
            ignoreCase="true" words="stopwords.txt"/>
        <filter class="solr.WordDelimiterFilterFactory"
            generateWordParts="1" generateNumberParts="1"
            catenateWords="1" catenateNumbers="1" catenateAll="0"
            splitOnCaseChange="1"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.EnglishPorterFilterFactory"
            protected="protwords.txt"/>
        <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
    </analyzer>
</fieldType>
于 2012-04-18T16:29:19.163 に答える