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://
デフォルトのsolr構成では、solr tarballに含まれているデフォルトのスキーマと一致するデフォルトを持ついくつかの要求ハンドラーが定義されています。
Solrconfigで定義されている要求ハンドラーを確認すると、<str name="qf">
およびその他の構成値には、スキーマで定義していないいくつかのフィールドが含まれています。
また、schema.xmlを確認して、デフォルトの検索フィールドがtextに設定されていないことを確認してください:<defaultSearchField>text</defaultSearchField>
私も同じ問題を抱えていました。 <defaultSearchField>
ファイルにsolrconfig.xml
がない場合は、/select
ハンドラーを探します。
その中にあなたはこのようなものを見つけるでしょう
<str name="df">text</str>
それが犯人です。 df
はデフォルトのフィールドを意味し、デフォルトでは、そしてもちろん、かなり愚かに、多くの場合にはないtext
というフィールドに設定されます。
それを削除して、デフォルトの検索フィールドにするものに置き換えます。
テキストフィールドは、デフォルトのschema.xml(新しいドキュメントを挿入するとき)で指定されているように、別のフィールドのコピーで構成されています。
そのため、solrconfig.xmlにdf "text"があり、solr adminページで次のフィールドを指定せずに検索を行う場合:videoなど。テキストフィールド(別のフィールドのコピーで構成される)で検索されます。
私は上記のように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>
これは常に当てはまるとは限りませんが、同様の問題が発生した場合、restartコマンドを使用してSolrサーバーを再起動するだけでは不十分であることがわかりました。 stopコマンドを使用してサーバーを明示的に停止し、次にstartコマンドを使用してサーバーを起動すると、実際にうまくいきました。ファイルを編集する必要はありませんでした。
追伸私の問題は、/ clusteringのみがSolrコアにアクセスできないことでした。