mem*_*oxy 29
图式
您的Solr架构很大程度上取决于您的搜索行为.在schema.xml文件中,您将看到许多选项,如"text"和"string".他们的行为不同.
<fieldtype name="string" class="solr.StrField" sortMissingLast="true" omitNorms="true"/>
Run Code Online (Sandbox Code Playgroud)
字符串字段类型是文字字符串匹配.它会像==
在SQL语句中一样运行.
<fieldtype name="text_ws" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
</analyzer>
</fieldtype>
Run Code Online (Sandbox Code Playgroud)
text_ws字段类型执行标记化.然而,该text
领域的一个巨大差异是停止词和分隔符和下壳的过滤器.注意如何为Lucene索引和Solr查询指定这些过滤器.因此,在搜索文本字段时,它将使用这些过滤器调整查询字词以帮助查找匹配项.
<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>
Run Code Online (Sandbox Code Playgroud)
例如,在为新闻故事编制索引时,您可能希望以不同方式搜索公司名称和标题.
<field name="headline" type="text" />
<field name="coname" type="string" indexed="true" multiValued="false" omitNorms="true" />
Run Code Online (Sandbox Code Playgroud)
上面的例子允许你进行类似的搜索&coname:Intel&headline:processor+specifications
并检索完全符合英特尔故事的匹配.
如果您想搜索范围
2.结果字段
您可以在RequestHandler中定义一组标准的返回字段
<requestHandler name="mumble" class="solr.DisMaxRequestHandler" >
<str name="fl">
category,coname,headline
</str>
</requestHandler>
Run Code Online (Sandbox Code Playgroud)
您还可以使用fl
参数在查询字符串中定义所需的字段:
/select?indent=on&version=2.2&q=coname%3AIn*&start=0&rows=10&fl=coname%2Cid&qt=standard
Run Code Online (Sandbox Code Playgroud)
您还可以使用语法在查询字词中选择范围field:[x TO *]
.如果您想按日期选择某些广告,可以使用以下内容构建查询
ad_date:[20100101 TO 20100201]
Run Code Online (Sandbox Code Playgroud)
在您的查询条款中.(搜索范围的方法有很多种,我提出的方法是使用整数而不是Date类.)