web-dev-qa-db-ja.com

Solrクエリ-HTTPエラー404未定義のフィールドテキスト

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://
23
Jarrod Nettles

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

Solrconfigで定義されている要求ハンドラーを確認すると、<str name="qf">およびその他の構成値には、スキーマで定義していないいくつかのフィールドが含まれています。

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

38
hovenko

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

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

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

それが犯人です。 dfはデフォルトのフィールドを意味し、デフォルトでは、そしてもちろん、かなり愚かに、多くの場合にはないtextというフィールドに設定されます。

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

47
Arindam

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

そのため、solrconfig.xmlにdf "text"があり、solr adminページで次のフィールドを指定せずに検索を行う場合:videoなど。テキストフィールド(別のフィールドのコピーで構成される)で検索されます。

0
Ababneh A

私は上記のように404の回答または突堤スタックトレースの例外として表示される同じ問題を抱えています。

重大: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>
0

これは常に当てはまるとは限りませんが、同様の問題が発生した場合、restartコマンドを使用してSolrサーバーを再起動するだけでは不十分であることがわかりました。 stopコマンドを使用してサーバーを明示的に停止し、次にstartコマンドを使用してサーバーを起動すると、実際にうまくいきました。ファイルを編集する必要はありませんでした。

追伸私の問題は、/ clusteringのみがSolrコアにアクセスできないことでした。

0
AppB