2017-01-02 27 views
0

私はApache Solrの新機能で、現在その概念を理解しようとしています。私はバージョン6.3を使用しています。私はスキーマを作成し、たくさんのドキュメントを含むファイルをアップロードしました。 1388の文書が利用可能であることがわかります。Solrが結果を返さない

管理UIのqフィールドに「coursetitle:biztalk」と入力すると、関連する結果が表示されますが、「biztalk」を入力すると表示されません。私はフィールド名を提供する必要はないと思った?ここで

はスキーマです:

<field name="courseid" type="string" indexed="true" stored="true" required="true" multiValued="false" /> 
<field name="coursetitle" type="text_general" indexed="true" stored="true" multiValued="false"/> 
<field name="coursetitlesearch" type="text_general" indexed="true" stored="true" multiValued="false"/> 
<field name="durationinseconds" type="int" indexed="true" stored="true" /> 
<field name="releasedate" type="date" indexed="true" stored="true"/> 

<field name="description" type="text_general" indexed="true" stored="true"/> 

<field name="assessmentstatus" type="text_general" indexed="true" stored="true"/> 
<field name="iscourseretired" type="text_general" indexed="true" stored="true"/> 
<field name="tag" type="string" multiValued="true" indexed="true" stored="true"/> 
<field name="course-author" type="string" multiValued="true" indexed="true" stored="true"/> 
+0

はスキーマ全体ですか? – root545

+0

私のフィールドの面では、はい –

答えて

2

あなたは、あなたがそれをデフォルトのフィールドを検索したい場合を除き、フィールドを指定する必要があります。

スキーマで次の項目を使用して設定できるデフォルトのフィールドにフィールドソル検索を指定しない場合。

<defaultSearchField> coursetitle </defaultSearchField> 

ですから、のschema.xmlに上記を入れた後、クエリのparamで biztalkような何かを検索する場合、Solrには、すべてのあなたのフィールドをせずに検索する場合はcoursetitle:biztalk

として、それを検索しますフィールド名を指定する必要があります。Copy Fields

さまざまなフィールドを表示するには、このhttps://wiki.apache.org/solr/SchemaXmlを参照することをお勧めします。

+0

ありがとう、リレーの返信で申し訳ありません。はい、あなたは正しいです。ただし、defaultSearchFieldは削除されます。ですから、私はリソースハンドラにdfを追加してしまいました。そして、もちろん、私はcopyFieldを使ってすべてのフィールドを通してsolr検索を行わなければなりませんでした。つまり、私の見解では、このソリューションはデータを複製するので理想的ではありません。理想的には、各フィールドは 'default-search = true'のような属性を持つ必要があります。または、フィールド-1、フィールド-2、...のようなデフォルトの設定をresourcehandlerに設定する必要がありますか? –

1

通常、いくつかの重要なフィールドは、Solrによってデフォルトを検索するために使用されるフィールドにコピーされます。他のすべてのフィールドのコンテンツを検索する

<defaultSearchField>SEARCHINDEX</defaultSearchField> 

<copyField source="AUTHOR" dest="SEARCHINDEX"/> 
<copyField source="coursetitle" dest="SEARCHINDEX"/> 
<copyField source="coursetitlesearch" dest="SEARCHINDEX"/> 
<copyField source="SUBTITLE" dest="SEARCHINDEX"/> 

今杖使用にSearchIndexフィールド:だから私はあなたが同じcopyfield

例を使用することをお勧め。 defaultSearchFieldの使用が償却されるため、solrconfig.xmlの要求ハンドラは、"df"を優先するように定義しています。少し研究を行った後

<initParams path="/update/**,/query,/select,/tvrh,/elevate,/spell,/browse"> 
    <lst name="defaults"> 
     <str name="df">text</str> 
    </lst> 
    </initParams> 
+0

ご連絡ありがとうございました。はい、あなたは正しいです。 defaultSearchFieldは削除されます。ですから、私はリソースハンドラにdfを追加してしまいました。そして、もちろん、私はcopyFieldを使ってすべてのフィールドを通してsolr検索を行わなければなりませんでした。それは、私の見解では、ソリューションではデータを複製するので理想的ではないと言われています。理想的には、各フィールドは 'default-search = true'のような属性を持つ必要があります。あるいは、resourcehandlerのデフォルト設定は field-1、field-2、...のようになります。、あなたは同意しない? –

0

が、それはedismaxを使用しているように見える、我々は確かにDF例えば、デフォルトのフィールドのリスト(スペース区切り)を渡すことができます。

df=courseid coursetitle course-author 

この道を、私たちはcopyFieldを使用する必要はありません!

+1

あなたは正しいです。クエリフィールドqfのdismax/edismaxのパラメータを使用して、qf = courseid coursetitle course-author'を使用して、異なる値でフィールドを上げることもできます。例: 'qf = courseid^2.0 coursetitle^10.0コース作成者^ 3.0' – vinod

関連する問題