1. Schema
Sizin Solr şema çok amaçlanan arama davranışları ile belirlenir. Lütfen schema.xml dosyasında, "metin" ve "string" gibi seçenekler bir demet göreceksiniz. Onlar farklı davranır.
<fieldtype name="string" class="solr.StrField" sortMissingLast="true" omitNorms="true"/>
Dize alan türü bir dize maç. Bir SQL ifadesinde ==
gibi çalışacaktır.
<fieldtype name="text_ws" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
</analyzer>
</fieldtype>
Text_ws alan türü sembolleştirmeyi yapar. Ancak, text
alanda büyük bir fark stop-kelime ve sınırlayıcı ve alt kasa için filtreler olduğunu. Bu filtreler Lucene endeksi ve Solr iki sorgu için belirlenmiş nasıl dikkat edin. Bir metin alanı ararken Yani, bir eşleşme bulmak yardımcı olmak için bu filtreleri kullanarak sorgu terimleri adapte olacaktır.
<fieldtype name="text" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
<filter ..... />
<filter ..... />
<filter ..... />
</analyzer>
</fieldtype>
Haber gibi şeyler dizine eklerken, örneğin, muhtemelen farklı şirket adları ve başlıkları aramak istiyorum.
<field name="headline" type="text" />
<field name="coname" type="string" indexed="true" multiValued="false" omitNorms="true" />
Yukarıdaki örnek &coname:Intel&headline:processor+specifications
gibi bir arama yapmak ve tam olarak Intel hikayeler isabet sonuç almak için izin verecek.
Eğer aralığını aramak istedim
2. Result Fields
Sen RequestHandler getiri alanları standart bir dizi tanımlanmış olabilir
<requestHandler name="mumble" class="solr.DisMaxRequestHandler" >
<str name="fl">
category,coname,headline
</str>
</requestHandler>
Ayrıca fl
parametresini kullanarak, sorgu dizesinde istenen alanları tanımlayabilir.:
/select?indent=on&version=2.2&q=coname%3AIn*&start=0&rows=10&fl=coname%2Cid&qt=standard
Ayrıca select ranges sorgu açısından field:[x TO *]
sözdizimi kullanarak yapabilirsiniz. Onların tarihe göre belirli reklamları seçmek istedim, bir sorgu oluşturmak olabilir
ad_date:[20100101 TO 20100201]
sorgu açısından. (Aralıkları aramak için birçok yolu vardır, ben yerine Date sınıfının tamsayıları kullanan bir yöntem sunuyorum.)