如何确定SOLR索引的字段类型?
我在MySQL表中有两个表字段。一个是VARCHAR,是分类广告(分类网站)的“标题”。另一个是TEXT字段,其中包含用于分类的“文本”。
(什么字段类型,要使用什么类,等等)
目前,我有一个“ ad_id”作为每个广告的唯一标识符,例如“ bmw_m3_82398292”。
(标识符的第一部分实际上是标题字段的内容,第二部分是选择的随机数)
谢谢
回答:
1.模式
您的Solr模式很大程度上取决于您的预期搜索行为。在schema.xml文件中,您会看到很多选择,例如“文本”和“字符串”。他们的行为有所不同。
<fieldtype name="string" class="solr.StrField" sortMissingLast="true" omitNorms="true"/>
字符串字段类型是文字字符串匹配。它会像==
在SQL语句中一样运行。
<fieldtype name="text_ws" class="solr.TextField" positionIncrementGap="100"> <analyzer>
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
</analyzer>
</fieldtype>
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>
例如,在为新闻报导编制索引时,您可能希望以不同的方式搜索公司名称和标题。
<field name="headline" type="text" /><field name="coname" type="string" indexed="true" multiValued="false" omitNorms="true" />
上面的示例将使您可以像搜索一样搜索&coname:Intel&headline:processor+specifications
并准确找到符合Intel故事的匹配项。
如果要搜索范围
2.结果字段
您可以在RequestHandler中定义一组标准的返回字段
<requestHandler name="mumble" class="solr.DisMaxRequestHandler" > <str name="fl">
category,coname,headline
</str>
</requestHandler>
您还可以使用fl
参数在查询字符串中定义所需的字段:
/select?indent=on&version=2.2&q=coname%3AIn*&start=0&rows=10&fl=coname%2Cid&qt=standard
您还可以使用语法在查询条件中选择范围field:[x TO
*]。如果您想按日期选择某些广告,则可以使用
ad_date:[20100101 TO 20100201]
在您的查询字词中。(有很多搜索范围的方法,我正在介绍一种使用整数而不是Date类的方法。)
以上是 如何确定SOLR索引的字段类型? 的全部内容, 来源链接: utcz.com/qa/416478.html