अपाचे सोलर - सुविधा
अपाचे सोलर में फेसिंग को विभिन्न श्रेणियों में खोज परिणामों के वर्गीकरण के लिए संदर्भित किया जाता है। इस अध्याय में, हम अपाचे सोलर में उपलब्ध फेसिंग के प्रकारों पर चर्चा करेंगे -
Query faceting - यह वर्तमान खोज परिणामों में दस्तावेजों की संख्या देता है जो दिए गए क्वेरी से मेल खाते हैं।
Date faceting - यह उन दस्तावेजों की संख्या लौटाता है जो कुछ निश्चित तिथि सीमाओं के भीतर आते हैं।
Faceting कमांड्स को किसी भी सामान्य Solr क्वेरी रिक्वेस्ट में जोड़ा जाता है, और faceting काउंट्स उसी क्वेरी रिस्पॉन्स में वापस आते हैं।
क्वेरी का उदाहरण उदाहरण
खेत का उपयोग करना faceting, हम किसी भी क्षेत्र में सभी शर्तों के लिए मायने रखते हैं, या सिर्फ शीर्ष शर्तें।
एक उदाहरण के रूप में, आइए हम निम्नलिखित पर विचार करें books.csv ऐसी फ़ाइल जिसमें विभिन्न पुस्तकों के बारे में डेटा हो।
id,cat,name,price,inStock,author,series_t,sequence_i,genre_s
0553573403,book,A Game of Thrones,5.99,true,George R.R. Martin,"A Song of Ice
and Fire",1,fantasy
0553579908,book,A Clash of Kings,10.99,true,George R.R. Martin,"A Song of Ice
and Fire",2,fantasy
055357342X,book,A Storm of Swords,7.99,true,George R.R. Martin,"A Song of Ice
and Fire",3,fantasy
0553293354,book,Foundation,7.99,true,Isaac Asimov,Foundation Novels,1,scifi
0812521390,book,The Black Company,4.99,false,Glen Cook,The Chronicles of The
Black Company,1,fantasy
0812550706,book,Ender's Game,6.99,true,Orson Scott Card,Ender,1,scifi
0441385532,book,Jhereg,7.95,false,Steven Brust,Vlad Taltos,1,fantasy
0380014300,book,Nine Princes In Amber,6.99,true,Roger Zelazny,the Chronicles of
Amber,1,fantasy
0805080481,book,The Book of Three,5.99,true,Lloyd Alexander,The Chronicles of
Prydain,1,fantasy
080508049X,book,The Black Cauldron,5.99,true,Lloyd Alexander,The Chronicles of
Prydain,2,fantasy
चलिए इस फाइल को Apache Solr में पोस्ट करते हैं post उपकरण।
[Hadoop@localhost bin]$ ./post -c Solr_sample sample.csv
उपरोक्त कमांड को निष्पादित करने पर, दिए गए सभी दस्तावेजों का उल्लेख किया गया है .csv फाइल अपाचे सोलर में अपलोड की जाएगी।
अब हम फ़ील्ड पर एक मुखरित क्वेरी निष्पादित करते हैं author संग्रह / कोर पर 0 पंक्तियों के साथ my_core।
Apache Solr का वेब UI खोलें और पेज के बायीं तरफ, चेकबॉक्स को चेक करें facet, जैसा कि निम्नलिखित स्क्रीनशॉट में दिखाया गया है।
चेकबॉक्स की जाँच करने पर, पहलू खोज के मापदंडों को पारित करने के लिए आपके पास तीन और पाठ क्षेत्र होंगे। अब, क्वेरी के मापदंडों के रूप में, निम्न मान पास करें।
q = *:*, rows = 0, facet.field = author
अंत में, क्वेरी पर क्लिक करके निष्पादित करें Execute Query बटन।
निष्पादित करने पर, यह निम्नलिखित परिणाम देगा।
यह लेखक पर आधारित सूचकांक में दस्तावेजों को वर्गीकृत करता है और प्रत्येक लेखक द्वारा योगदान की गई पुस्तकों की संख्या को निर्दिष्ट करता है।
जावा क्लाइंट एपीआई का उपयोग करना
Apache Solr इंडेक्स में दस्तावेज़ जोड़ने के लिए जावा प्रोग्राम है। इस कोड को नाम वाली फ़ाइल में सहेजेंHitHighlighting.java।
import java.io.IOException;
import java.util.List;
import org.apache.Solr.client.Solrj.SolrClient;
import org.apache.Solr.client.Solrj.SolrQuery;
import org.apache.Solr.client.Solrj.SolrServerException;
import org.apache.Solr.client.Solrj.impl.HttpSolrClient;
import org.apache.Solr.client.Solrj.request.QueryRequest;
import org.apache.Solr.client.Solrj.response.FacetField;
import org.apache.Solr.client.Solrj.response.FacetField.Count;
import org.apache.Solr.client.Solrj.response.QueryResponse;
import org.apache.Solr.common.SolrInputDocument;
public class HitHighlighting {
public static void main(String args[]) throws SolrServerException, IOException {
//Preparing the Solr client
String urlString = "http://localhost:8983/Solr/my_core";
SolrClient Solr = new HttpSolrClient.Builder(urlString).build();
//Preparing the Solr document
SolrInputDocument doc = new SolrInputDocument();
//String query = request.query;
SolrQuery query = new SolrQuery();
//Setting the query string
query.setQuery("*:*");
//Setting the no.of rows
query.setRows(0);
//Adding the facet field
query.addFacetField("author");
//Creating the query request
QueryRequest qryReq = new QueryRequest(query);
//Creating the query response
QueryResponse resp = qryReq.process(Solr);
//Retrieving the response fields
System.out.println(resp.getFacetFields());
List<FacetField> facetFields = resp.getFacetFields();
for (int i = 0; i > facetFields.size(); i++) {
FacetField facetField = facetFields.get(i);
List<Count> facetInfo = facetField.getValues();
for (FacetField.Count facetInstance : facetInfo) {
System.out.println(facetInstance.getName() + " : " +
facetInstance.getCount() + " [drilldown qry:" +
facetInstance.getAsFilterQuery());
}
System.out.println("Hello");
}
}
}
टर्मिनल में निम्नलिखित कमांड निष्पादित करके उपरोक्त कोड संकलित करें -
[Hadoop@localhost bin]$ javac HitHighlighting
[Hadoop@localhost bin]$ java HitHighlighting
उपरोक्त कमांड निष्पादित करने पर, आपको निम्न आउटपुट मिलेगा।
[author:[George R.R. Martin (3), Lloyd Alexander (2), Glen Cook (1), Isaac
Asimov (1), Orson Scott Card (1), Roger Zelazny (1), Steven Brust (1)]]