2016-03-23 7 views
1

Ich fange an, Solr zu lernen (mit der Version 5.5.0). Ich verwende verwaltete-Schema und Daten-Conflif.xml-Dateien in zwei sql-Server-Tabellen: Firma & Kontakt.Solr: wie Abfrage bestimmten Entity, wenn mehrere

Ich bin in der Lage, von der UI, den Datenimport auszuführen, eine Entität zu einer Zeit auszuwählen.

Dies ist die Botschaft, die ich für Gesellschaft bekommen:

Indizierung abgeschlossen. Hinzugefügt/Aktualisiert: 8.293 Dokumente. Löschte 0 Dokumente. (Dauer: 01s) Anfragen: 1 (1/s), Fetched: 8293 (8293/s), Skipped: 0, verarbeitete: 8293 (8293/s) gestartet: weniger als eine Minute vor

Dies ist Nachricht, die ich bekomme für Kontakt:

Indizierung abgeschlossen. Hinzugefügt/Aktualisiert: 81 Dokumente. Löschte 0 Dokumente. Anfragen: 1, Fetched: 81, Skipped: 0, verarbeitet: 81 gestartet: weniger als eine Minute vor

Wenn ich den Abschnitt Abfrage klicken, ich möchte eine Abfrage durchzuführen alle Kontakt, um zu sehen, und/oder Firmendatensätze, nicht unbedingt kombiniert, sondern nur in der Lage sein, sie abzufragen.

Ich bin nicht sicher, wie dies zu tun ist, ist es möglich, Hilfe zu bekommen, um zu verstehen, wie man angibt, für welche Entität ich die Abfrage ausführen möchte?

Hier sind die 2 Dateien, die ich geändert:

Daten cofig.xml:

<dataConfig> 
    <dataSource type="JdbcDataSource" 
       driver="com.microsoft.sqlserver.jdbc.SQLServerDriver" 
       url="jdbc:sqlserver://sql.server.com\test;databaseName=test" 
       user="testusr" 
       password="testpwd"/> 
    <document> 
    <entity name="Company" pk="CompanyID" query="SELECT * FROM tblCompany"> 
     <field column="CompanyID" name="company_companyid"/> 
     <field column="Name" name="company_name"/> 
     <field column="Website" name="company_website"/> 
     <field column="Description" name="company_description"/> 
     <field column="NumberOfEmployees" name="company_numberofemployees"/> 
     <field column="AnnualRevenue" name="company_annualrevenue"/> 
     <field column="YearFounded" name="company_yearfounded"/> 
    </entity> 

    <entity name="Contact" pk="ContactID" query="SELECT * FROM tblContact">  
     <field column="ContactID" name="contact_contactid"/> 
     <field column="FirstName" name="contact_firstname"/> 
     <field column="MiddleInitial" name="contact_middleinitial"/> 
     <field column="LastName" name="contact_lastname"/> 
     <field column="Email" name="contact_email"/> 
     <field column="Description" name="contact_description"/> 
    </entity> 
    </document> 
</dataConfig> 

Managed-Schema:

<!-- Company Begin --> 
    <field name="company_companyid" type="string" indexed="true"/> 
    <field name="company_name" type="string" indexed="true"/> 
    <field name="company_website" type="string" indexed="true"/> 
    <field name="company_description" type="string" indexed="true"/> 
    <field name="company_numberofemployees" type="string" indexed="true"/> 
    <field name="company_annualrevenue" type="string" indexed="true"/> 
    <field name="company_yearfounded" type="string" indexed="true"/> 
    <!-- Company End --> 

    <!-- Contact Begin --> 
    <field name="contact_contactid" type="string" indexed="true" /> 
    <field name="contact_firstname" type="string" indexed="true"/> 
    <field name="contact_middleinitial" type="string" indexed="true"/> 
    <field name="contact_lastname" type="string" indexed="true"/> 
    <field name="contact_email" type="string" indexed="true"/> 
    <!-- Contact End --> 

UPDATE

Ich versuchte, mit dem Feld fl company_companyid auszuwählen, aber ich habe keine Ergebnisse erhalten.

Ich bin mit einem Screenshot:

enter image description here

+0

Nur um sicherzustellen, dass ich verstehe, Sie wollen eine Abfrage ausführen zu können und erhalten zum Beispiel nur auf die Entität Kontakt verwandte Bereiche? – TMBT

+0

Ich möchte in der Lage sein, eine Abfrage auszuführen und Felder für Firma oder Kontakt zu erhalten, nicht kombiniert, nur wie benötigt. Entweder eine Abfrage gegen Firmenfelder oder eine Abfrage nach Kontaktfeldern. Ich hoffe das macht Sinn. Vielen Dank. –

Antwort

0

Um Felder wie aus einem Dokument benötigt werden, verwenden fl. Zum Beispiel, wenn Sie SolrJ verwenden, würden Sie etwas wie query.set("fl", "fieldA, fieldB") haben.

In einer URL, sieht es wie folgt aus: http://host:port/solr/coreName/select?q=*%3A*&fl=fieldA,fieldB&wt=json&indent=true

+0

Ich werde es versuchen und Sie wissen lassen. Ich weiß, ich benutze Solr Version 5.5.0, nicht sicher, wie Sie herausfinden, ob dies auch SolrJ ist –

+0

Ich habe Ihre Empfehlung versucht, aber ich habe keine Ergebnisse erhalten. Ich habe unter der fl-Box eingegeben: company_companyid - was Sie sehen können, ist unter der Firma in der Daten-Konfiguration enthalten.XML-Datei –

+0

Versuchen Sie, all Ihre Schemafelder gespeichert = True hinzuzufügen. Ein gespeichertes Feld wird bei der Suche zurückgegeben. Sie müssen einen weiteren vollständigen Import ausführen, damit die Änderungen wirksam werden. – TMBT