±à¼ÍƼö: |
±¾ÎÄÖ÷Òª´ÓsolrÁù¸ö·½Ãæ½éÉÜÁËsolrµÄ»ù±¾Ó¦ÓÃ
£¬Ï£Íû¶ÔÄúÄÜÓÐËù°ïÖú¡£
±¾ÎÄÀ´×ÔÓÚcsdn£¬ÓÉ»ðÁú¹ûÈí¼þÁõ衱à¼ÍƼö |
|
1.schema.xml
1.1.FieldºÍfieldType£¨Öص㣩
schema.xml£¬ÔÚSolrCoreµÄconfĿ¼Ï£¬ËüÊÇSolrÊý¾Ý±íÅäÖÃÎļþ£¬Ëü¶¨ÒåÁ˼ÓÈëË÷ÒýµÄÊý¾ÝµÄÊý¾ÝÀàÐ͵ġ£Ö÷Òª°üÀ¨FieldTypes¡¢FieldsºÍÆäËûµÄһЩȱʡÉèÖá£
field£º½øÐÐË÷Òý£¬ÐèÒª´´½¨document£¬documentÖаüÀ¨ Á˺ܶàµÄfield£¨Óò£©¡£
fieldÊôÐÔ£ºÊÇ·ñË÷Òý¡¢ÊÇ·ñ´æ´¢¡¢ÊÇ·ñ·Ö´Ê £¬ÊÇ·ñ¶àÖµmultiValued
multiValued£º¸ÃFieldÈç¹ûÒª´æ´¢¶à¸öֵʱÉèÖÃΪtrue£¬solrÔÊÐíÒ»¸öField´æ´¢¶à¸öÖµ£¬±ÈÈç´æ´¢Ò»¸öÓû§µÄºÃÓÑid£¨¶à¸ö£©£¬ÉÌÆ·µÄͼƬ£¨¶à¸ö£¬´óͼºÍСͼ£©£¬Í¨¹ýʹÓÃsolr²éѯҪ¿´³ö·µ»Ø¸ø¿Í»§¶ËÊÇÊý×飺
Fieldtype£ºÔÚsolrÖжÔÿ¸öField¶¼ÓÐÒ»¸öTypeÀàÐÍ¡£
ÔÚSolrÖнøÐÐË÷Òý¡¢ËÑË÷ʱÐèÒªÓÃÄÄЩfieldÐèÒªÌáǰÔÚschema.xmlÎļþÖж¨Ò壡£¡£¡£¡
ͨ¹ý½çÃæ²é¿´ solrCoreÖÐÓÐÄÄЩfield±»¶¨Ò壺

±ÈÈ磺
<field name="name"
type="text_general" indexed="true"
stored="true"/> |
filedµÄname£ºname
indexed£ºÊÇ·ñË÷Òý£¬true±íʾҪË÷Òý£¬Ë÷ÒýµÄÄ¿µÄΪÁËËÑË÷
stored£ºÊÇ·ñ´æ´¢£¬´æ´¢µÄÄ¿µÄÊÇΪÁË´ÓË÷ÒýÎļþ¶ÁÈ¡Êý¾Ý
type£ºtext_general

1.2.Ö÷¼ü£¨Öص㣩
SolrÔÚά»¤Ë÷ÒýʱҪ¸ù¾ÝÖ÷¼ü½øÐÐά»¤£¬±ÈÈç´´½¨Ë÷ÒýûÓÐÖ¸¶¨Ö÷¼ü£¬±¨ÈçÏ´íÎó£º

ÈçºÎÖ¸¶¨solrµÄÖ÷¼ü£º
ÔÚschema.xmlÅäÖÃid
SolrÖÐĬÈ϶¨ÒåΨһÖ÷¼ükeyΪidÓò£¬ÈçÏ£º
id
SolrÔÚɾ³ý¡¢¸üÐÂË÷ÒýʱʹÓÃidÓò½øÐÐÅжϣ¬Ò²¿ÉÒÔ×Ô¶¨ÒåΨһÖ÷¼ü¡£
×¢ÒâÔÚ´´½¨Ë÷Òýʱ±ØÐëÖ¸¶¨Î¨Ò»Ô¼Êø¡£
1.3.copyField¸´ÖÆÓò
copyField¸´ÖÆÓò£¬¿ÉÒÔ½«¶à¸öField¸´ÖƵ½Ò»¸öFieldÖУ¬ÒÔ±ã½øÐÐͳһµÄ¼ìË÷£º
±ÈÈ磬ÊäÈë¹Ø¼ü×ÖÒªËÑË÷title±êÌâºÍÄÚÈÝcontentÕâÁ½¸öÓòʱ£¬ÒªÓõ½¸´ÖÆÓò
¶¨ÒåÄ¿±êÓò£º

±ØÐëҪʹÓãºmultiValued=¡±true¡±
½«ÒÔϵÄÓò¸´ÖƵ½Ä¿±êÓòÖУº

Èç¹ûÔÚËÑË÷ʱ£¬ËÑË÷textÓò£¬solr»á·Ö±ð´ÓÒÔÉÏcat¡¢name¡¢manu¡¢features¡¢includesÕâÓòÖÐËÑË÷£¬ÀàËÆluceneÖÐ×éºÏ Óò ËÑË÷¡£
1.4.dynamicField
ʹÓà solrʱҪ¶¨ÒåºÜ¶àfield±È½ÏÂé·³£¬¿ÉÒÔ¶¨ÒåÒ»ÖÖ¶¯Ì¬Óò£¬¶¯Ì¬ÓòûÓоßÌåµÄÓòÃûÊǶ¨ÒåÒ»¸ö¹æÔò£¬±ÈÈ磺name Ϊ*_i¡£
µ±´´½¨Ë÷Òý£¬Ö¸¶¨fieldÃû³ÆÆ¥ÅäÉϹæÔòsolr¾ÍÖ´Ðгɹ¦£¬±ÈÈ磺¶¯Ì¬Óò*_i£¬Ö»ÒªÒÔ_i½áβ µÄ¾Í¿ÉÒÔË÷Òý´´½¨³É¹¦¡£
2.°²×°ÖÐÎÄ·Ö´ÊÆ÷
2.1.IKAnalyzer²¿Êð
½« IkanalyzerµÄjar¿½±´µ½SolrcoreÖÐ
½«IKAnalyzer2012FF_u1.jar¿½±´µ½ solr\contrib\IKAnalyzer\libÏÂ
ÔÚsolrconfig.xmlÖÐÅäÖüÓÔØIKanalyzerµÄjar£¬Ìí¼ÓÅäÖãº
<lib dir="${solr.install.dir:../..}/contrib/IKAnalyzer/lib"
regex=".*\.jar" /> |
ÅäÖÃÀ©Õ¹´Ê¿âÎļþ£º
ÔÚTomcatµÄwebapps/solr/WEB-INF/Ï´´½¨classesĿ¼
½«IKAnalyzer.cfg.xml¡¢ext_stopword.dic mydict.dic copyµ½
Tomcat/webapps/solr/WEB-INF/classesÏÂ
×¢Ò⣺ext_stopword.dic ºÍmydict.dic±ØÐë±£´æ³ÉÎÞBOMµÄutf-8ÀàÐÍ¡£
2.2.ÐÞ¸Äschema.xmlÎļþÌí¼ÓеÄfieldType¼°Field²âÊÔ
Ìí¼ÓfieldType

×Ô¶¨ÒåField:

3.×Ô¶¨ÒåÒµÎñϵͳField
ҪʹÓÃSolrȥʵÏÖÒµÎñϵͳվÄÚËÑË÷¹¦ÄÜ£¬ÐèÒªÔÚsolrCoreÖÐschema.xmlÎļþÖÐ×Ô¶¨Òåfield¡£
3.1.ÐèÇó
ҪʹÓÃsolrʵÏÖµçÉÌÍøÕ¾ÖÐÉÌÆ·ËÑË÷¡£
µçÉÌÖÐÉÌÆ·ÐÅÏ¢ÔÚmysqlÊý¾Ý¿âÖд洢ÁË£¬½«mysqlÊý¾Ý¿âÖÐÊý¾ÝÔÚsolrÖд´½¨Ë÷Òý¡£
ÐèÒªÔÚsolrµÄschema.xmlÎļþ¶¨ÒåÉÌÆ·Field¡£
3.2.¶¨Òå²½Öè
ÏÈÈ·¶¨¶¨ÒåµÄÉÌÆ·documentµÄfieldÓÐÄÄЩ£¿
¿ÉÒÔ¸ù¾ÝmysqlÊý¾Ý¿âÖÐÉÌÆ·±íµÄ×Ö¶ÎÀ´È·¶¨£º
productsÉÌÆ·±í£º

ÉÌÆ·documentµÄfield°üÀ¨£ºpid¡¢name¡¢catalog¡¢catalog_name¡¢price¡¢description¡¢picture
Ïȶ¨ÒåFieldtype£º
solr±¾ÉíÌṩµÄfieldtypeÀàÐ͹»ÓÃÁ˲»Óö¨ÒåеÄÁË¡£
ÔÙ¶¨ÒåField£º
pid£ºÉÌÆ·idÖ÷¼ü
ʹÓÃsolr±¾ÉíÌṩµÄ£º
<field name=¡±id¡± type=¡±string¡± indexed=¡±true¡± stored=¡±true¡±
required=¡±true¡± multiValued=¡±false¡± />

4.SorlJ´´½¨Ë÷Òý
4.1.SorlJ½éÉÜ
SolrÊÇÒ»¸öÈ«ÎļìË÷µÄ·þÎñ£¬¶ÔÍâÌṩwebservice·þÎñ£¬webserviceʹÓõÄhttpÐÒé¡£
Solr×÷Ϊһ¸ö·þÎñ¶Ë£¬Í¬Ê±Ò²ÌṩºÜ¶àµÄ²»Í¬±à³ÌÓïÑԵĿͻ§¶Ë£¬¹©³ÌÐòÔ±¿ª·¢Ê¹Óá£

4.2.SorlJ°²×°
solrj¾ÍÊÇÒ»ÍÆapi£¬¼´jar°ü¡£
ÒµÎñϵͳµÄÓ¦ÓóÌÐò£¨javaEE³ÌÐò£©Í¨¹ýsolrJÌṩµÄapiµ÷ÓÃsolr·þÎñ¡£
ÏÂÔØµÄsolrµÄzip°üÖоÍÓÐsolrjµÄjar:

ҪʹÓÃsolrJÐèÒªÄÄЩjar°ü£¿
jar°üÃ÷ϸ£º
solr-4.10.3\dist\solrj-lib*
solr-4.10.3\dist\ solr-solrj-4.10.3.jar
solr-4.10.3\example\lib\ext*
junit°ü
4.3.SolrjË÷Òýά»¤
4.3.1.Ìí¼Ó¼°¸üÐÂË÷Òý

4.3.2.ɾ³ýË÷Òý

5.Êý¾Ýµ¼Èë´¦ÀíÆ÷
5.1.dataimport-Handler½éÉÜ
solrÌṩdataimport-HandlerÊý¾Ýµ¼Èë´¦ÀíÆ÷£¬¹¤×÷Á÷³Ì£º
1¡¢solrͨ¹ýdataimport-Handler²éѯ¹ØÏµÊý¾Ý¿âÖеÄÊý¾Ý
2¡¢¶Ô²éѯµ½µÄÊý¾Ý´´½¨Ë÷Òý
ÉϱߵĹý³ÌÊÇ×Ô¶¯»¯Íê³ÉµÄ¡£
¿ÉÒÔͨ¹ý´Ëdataimport-Handler£¬ÅúÁ¿½«¹ØÏµÊý¾Ý¿âÖеÄÊý¾Ý´´½¨Ë÷Òýµ½solrË÷Òý¿âÖС£
5.2.µÚÒ»²½£º¼ÓÔØdataimportµÄjar°ü
½«solr\dist\ solr-dataimporthandler-4.10.3.jar¿½±´ÖÁsolr\contrib\dataimporthandler
ÅäÖÃsolrconfig.xml¼ÓÔØjar°ü£º
<lib dir="${solr.install.dir:../..}/contrib/dataimporthandler/
lib" regex=".*\.jar" /> |
5.3.µÚ¶þ²½£º¼ÓÔØmysqlÊý¾ÝÇý¶¯°ü
·½·¨Í¬ÉÏ£¬½«mysqlÊý¾Ý¿âÇý¶¯µÄjar¿½±´ÖÁsolr\contrib\databaseDriverÏÂ
ÅäÖÃsolrconfig.xml¼ÓÔØjar°ü£º
<lib dir="${solr.install.dir:../..}/contrib/databaseDriver/lib"
regex=".*\.jar" /> |
5.4.µÚÈý²½£ºÅäÖÃdataimportµ¼ÈëÊý¾Ý
´´½¨data-config.xmlÎļþ£¬´æ·ÅÔÚSolrCoreµÄconfĿ¼

5.5.µÚËIJ½£ºÐÞ¸Äsolrconfig.xml£¬Ìí¼ÓrequestHandler

5.6.²âÊÔÊý¾Ýµ¼Èë

6.solrj½øÐÐËÑË÷
6.1.solrµÄ²éѯÓï·¨
1.q - ²éѯ¹Ø¼ü×Ö£¬±ØÐëµÄ£¬Èç¹û²éѯËùÓÐʹÓÃ:
ÇëÇóµÄqÊÇ×Ö·û´®

2.fq - £¨filter query£©¹ýÂDzéѯ£¬×÷ÓãºÔÚq²éѯ·ûºÏ½á¹ûÖÐͬʱÊÇfq²éѯ·ûºÏµÄ£¬ÀýÈ磺£º 
ÇëÇófqÊÇÒ»¸öÊý×飨¶à¸öÖµ£©
¹ýÂ˲éѯ¼Û¸ñ´Ó1µ½40µÄ¼Ç¼¡£
Ò²¿ÉÒÔÔÚ¡°q¡±²éѯÌõ¼þÖÐʹÓÃproduct_price:[1 TO 40]£¬ÈçÏ£º

Ò²¿ÉÒÔʹÓá°*¡±±íʾÎÞÏÞ£¬ÀýÈ磺
40ÒÔÉÏ£ºproduct_price:[40 TO *]
40ÒÔÏ£ºproduct_price:[* TO 40]
3.sort - ÅÅÐò£¬¸ñʽ£ºsort=<field name>+<desc|asc>[,<field
name>+<desc|asc>]¡ ¡£Ê¾Àý£º

°´¼Û¸ñ½µÐò
4.start - ·ÖÒ³ÏÔʾʹÓ㬿ªÊ¼¼Ç¼Ï±꣬´Ó0¿ªÊ¼
5.rows - Ö¸¶¨·µ»Ø½á¹û×î¶àÓжàÉÙÌõ¼Ç¼£¬ÅäºÏstartÀ´ÊµÏÖ·ÖÒ³¡£
ʵ¼Ê¿ª·¢Ê±£¬ÖªµÀµ±Ç°Ò³ÂëºÍÿҳÏÔʾµÄ¸öÊý×îºóÇó³ö¿ªÊ¼Ï±ꡣ
6.fl - Ö¸¶¨·µ»ØÄÇЩ×Ö¶ÎÄÚÈÝ£¬ÓöººÅ»ò¿Õ¸ñ·Ö¸ô¶à¸ö¡£

ÏÔʾÉÌÆ·Ãû³ÆºÍÉÌÆ·¼Û¸ñ
7.df-Ö¸¶¨Ò»¸öËÑË÷Field

Ò²¿ÉÒÔÔÚSolrCoreĿ¼ ÖÐconf/solrconfig.xmlÎļþÖÐÖ¸¶¨Ä¬ÈÏËÑË÷Field£¬Ö¸¶¨ºó¾Í¿ÉÒÔÖ±½ÓÔÚ¡°q¡±²éѯÌõ¼þÖÐÊäÈë¹Ø¼ü×Ö¡£

8.wt - (writer type)Ö¸¶¨Êä³ö¸ñʽ£¬¿ÉÒÔÓÐ xml, json, php, phps, ºóÃæ solr 1.3Ôö¼ÓµÄ£¬ÒªÓÃ֪ͨÎÒÃÇ£¬ÒòΪĬÈÏûÓдò¿ª.
9.hl ÊÇ·ñ¸ßÁÁ ,ÉèÖøßÁÁField£¬ÉèÖøñʽǰ׺ºÍºó׺¡£

6.2.solrjËÑË÷·½·¨
//²éѯË÷Òý
@Test
public void testSearchIndex() throws Exception{
////´´½¨Solr·þÎñ¶ÔÏó£¬Í¨¹ý´Ë¶ÔÏóÏòsolr·þÎñ·¢ÆðÇëÇó
SolrServer solrServer = new HttpSolrServer(solrUrl);
//´´½¨²éѯ¶ÔÏó
SolrQuery query = new SolrQuery();
//²éѯ¹Ø¼ü×Ö£¬q²»ÄÜÊ¡ÂÔ
query.set("q","product_keywords:˯Õí");
//Ö¸¶¨¹ýÂË
query.set("fq","product_price:[1
TO 40]");
query.set("fq","product_catalog_name:ÓÄĬÔÓ»õ");
//ÅÅÐò
//²ÎÊý£ºfieldÓò£¬ÅÅÐòÀàÐÍ£¨asc,desc£©
query.addSort("product_price", SolrQuery.ORDER.desc);
//·ÖÒ³
//ʵ¼Ê¿ª·¢Ê±£¬ÖªµÀµ±Ç°Ò³ÂëºÍÿҳÏÔʾµÄ¸öÊý×îºóÇó³ö¿ªÊ¼Ï±ê
int curPage = 1;
int rows = 15;
//¼ÆËã³ö¿ªÊ¼¼Ç¼Ï±ê
int start = rows * (curPage - 1);
//ÏòqueryÖÐÉèÖ÷ÖÒ³²ÎÊý
query.setStart(start);
query.setRows(rows);
//Ö¸¶¨ÏÔʾµÄfield
// query.addField("product_name");
// query.addField("id");
//Ö¸¶¨Ä¬ÈÏËÑË÷Óò
query.set("df","product_keywords");
//¿ªÆô¸ßÁÁ
query.setHighlight(true);
//ÉèÖøßÁÁ ²ÎÊý
query.addHighlightField("product_name");
//ÉèÖøßÁÁǰ׺ºÍºó׺
query.setHighlightSimplePre("<span style=\"color:red\">");
query.setHighlightSimplePost("</span>");
//Ö´Ðвéѯ
QueryResponse response = solrServer.query(query);
//´ÓÏìÓ¦Öеõ½½á¹û
SolrDocumentList documents = response.getResults();
//Æ¥Åäµ½µÄ×ܼǼÊý
long numFound = documents.getNumFound();
System.out.println("Æ¥Åäµ½µÄ×ܼǼÊý£º"+numFound);
//´ÓÏìÓ¦ÖлñµÃ¸ßÁÁÐÅÏ¢
Map<String, Map<String, List<String>>>
highlighting = response. get Highlighting();
for (SolrDocument document:documents){
System.out.println("ÉÌÆ·id£º"+document.get("id"));
System.out.println("ÉÌÆ·Ãû³Æ£º"+document.get
("product_name"));
System.out.println("ÉÌÆ·¼Û¸ñ£º"+document.get
("product_price"));
System.out.println("ÉÌÆ··ÖÀàÃû³Æ£º"+document.get
("product_catalog_name"));
System.out.println("ÉÌÆ·Í¼Æ¬£º"+document.get
("product_picture"));
//»ñµÃ¸ßÁÁµÄÐÅÏ¢
if(highlighting!=null){
//¸ù¾ÝÖ÷¼ü»ñÈ¡¸ßÁÁÐÅÏ¢
Map<String, List<String>> map = highlighting.get
(document.get("id"));
if(map!=null){
List<String> list = map.get("product_name");
if(list!=null){
System.out.println("¸ßÁÁºó£º"+list.get(0));
}
}
}
} } |
|