Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
SolrµÄ»ù±¾Ê¹ÓÃ
 
×÷Õߣºhappy_meng
  2072  次浏览      29
 2019-10-14
 
±à¼­ÍƼö:
±¾ÎÄÖ÷Òª´Ó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));
}
}
}
} }
 
   
2072 ´Îä¯ÀÀ       29
Ïà¹ØÎÄÕÂ

Java΢·þÎñÐÂÉú´úÖ®Nacos
ÉîÈëÀí½âJavaÖеÄÈÝÆ÷
JavaÈÝÆ÷Ïê½â
Java´úÂëÖÊÁ¿¼ì²é¹¤¾ß¼°Ê¹Óð¸Àý
Ïà¹ØÎĵµ

JavaÐÔÄÜÓÅ»¯
Spring¿ò¼Ü
SSM¿ò¼Ü¼òµ¥¼òÉÜ
´ÓÁ㿪ʼѧjava±à³Ì¾­µä
Ïà¹Ø¿Î³Ì

¸ßÐÔÄÜJava±à³ÌÓëϵͳÐÔÄÜÓÅ»¯
JavaEE¼Ü¹¹¡¢ Éè¼ÆÄ£Ê½¼°ÐÔÄܵ÷ÓÅ
Java±à³Ì»ù´¡µ½Ó¦Óÿª·¢
JAVAÐéÄâ»úÔ­ÀíÆÊÎö