2012-02-06 5 views
6

私は、Apache Solrのを始めるためにしようとしている入門、しかし、いくつかのものは私には明確ではありません。 tutorialを読んで、実行中のSolrインスタンスを設定しました。私が紛らわしいのは、Solr(スキーマなど)のすべての設定がXML形式であるということです。サンプルデータを追加すると、xmlドキュメントを追加する方法が表示されます(java -jar post.jar solr.xml monitor.xml)。それは単にサンプルフォーマットの悪い選択ですか?つまり、ドキュメントを記述したデータをアップロードしているのですか、追加する実際のドキュメントは.xmlファイルですか?は、Solrの

私は.txt形式でいくつかの本を追加しようとしているので、私はjava -jar post.jar mydoc.txtを使用している場合、私はそれを追加するのですか?どのように私はそれについては、この文書メタデータ(作者、タイトル)を追加することができますか?私は、ファイルを投稿しようとすると

<html> 
    <head></head> 
<body> 
    <form action="http://localhost:8983/solr/update?commit=true" enctype="multipart/form-data" method="post"> 
    <input type="file"> 
    <input type="submit" value="Send"> 
    </form> 
</body> 
</html> 

は、私はこの応答を得る:

<response> 
    <lst name="responseHeader"> 
    <int name="status">0</int> 
    <int name="QTime">26</int> 
    </lst> 
</response> 

です私はSolrのにドキュメントを投稿する単純なHTMLページを設定しようとした、と述べた

これは正しい?ファイルを正常に追加したことを意味しますか?そうであれば、ファイル内の単語の1つ、たとえば "montagna"(これはイタリア語の本で、montagnaは山を意味します...)。私は、URL

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

を訪問した場合、私は返される何か(多分全体のテキスト、またはファイルに関するいくつかの情報を)期待していますが、これは私が得るものです:

<response> 
    <lst name="responseHeader"> 
    <int name="status">0</int> 
     <int name="QTime">1</int> 
     <lst name="params"> 
     <str name="indent">on</str> 
     <str name="start">0</str> 
     <str name="q">montagna</str> 
     <str name="rows">10</str> 
    </lst> 
    </lst> 
    <result name="response" numFound="0" start="0"/> 
</response> 

は見えません私とのマッチのように。また、to this answerによれば、私はhl.fragsizeで一致を囲むテキストを取り戻すことができるはずです。これを検索文字列にどのように組み込むのですか?あなたは

答えて

5

Solrの例では、XMLメッセージを介してインデックスにドキュメントを追加しますありがとうございました。見てくださいhere。あなたが言及した*.xmlは、ファイルシステムにいくつかのxmlメッセージが格納されているためです。これらのxmlメッセージは次のようなものです:

<add> 
    <doc> 
    <field name="id">UTF8TEST</field> 
    <field name="name">Test with some UTF-8 encoded characters</field> 
    <field name="manu">Apache Software Foundation</field> 
    <field name="cat">software</field> 
    <field name="cat">search</field> 
    <field name="features">No accents here</field> 
    <field name="price">0</field> 
    <!-- no popularity, get the default from schema.xml --> 
    <field name="inStock">true</field> 
    </doc> 
</add> 

これは、どのような種類のドキュメントをインデックスにするかを表す単なる方法です。すべてのドキュメントには1つ以上のフィールドが含まれています。そこにSolrに文書を追加するためのさまざまな方法は、例えば、それはまたCSV formatを受け入れ、ありますが、最も一般的なのは、今日のXMLフォーマットです。

私はあなたが実際には何もインデックス化されていないと思います。このクエリの出力を確認することができます:http://localhost:8983/solr/select/?q=*:*インデックスにあるすべてのドキュメントを取得します。一般的なエラーはコミットすることも忘れていますが、あなたのURLにcommit=trueパラメータを追加したことがわかりました。そうではありません。

あなたがインデックスにテキストファイルの内容だけをしたい場合は、例えば二つのフィールドを使用してスキーマを定義することができます。

  • ファイル名
  • コンテンツ

とにこのメッセージを使用します文書のインデックス登録:

<add> 
    <doc> 
    <field name="filename">test.txt</field> 
    <field name="content">Test with some UTF-8 encoded characters</field> 
    </doc> 
</add> 
1

用語の理解:

Document in solr -> Row in RDBMS 
Field of document -> Column of a cell 

そして、Solrコアはもちろん、データベースと巨大なテーブルの両方が(潜在的に)希薄な方法で占有されています。

あなたの(特定の)用途では、ファイルごとにドキュメントを作成します。 ID、ファイルコンテンツなどで構成されています。


XMLは、solr操作を構成する1つの方法です。 http://wiki.apache.org/solr/UpdateXmlMessages

これには、add、delete、commit、およびoptimize操作があります。追加操作には、1つまたは複数の文書が含まれます。

<add> 
    <doc> 
    <field name="employeeId">05991</field> 
    <field name="office">Bridgewater</field> 
    <field name="skills">Perl</field> 
    <field name="skills">Java</field> 
    </doc> 
    [<doc> ... </doc>[<doc> ... </doc>]] 
</add> 

CSV(のみ機能を追加)、JSON(全機能)、DIH(予定データベースのインポート)もあります。

また、すべての種類の豊富なドキュメント(DOC、DOCX、PDF)からコンテンツ(およびメタデータ)を抽出できるextracting request handlerもあります。追加:あなた自身のフィールドを設定するにはliteralがあります。


抽出要求ハンドラは、その出力をフィールドtextに格納します。クエリパーサーq=と蛍光ペンは、デフォルトフィールド(あなたが行ったことに関係します)をtextとします。フィールドを指定することができます。また、フィールドsolrは結果であなたに戻ります。