首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何确定SOLR索引的字段类型?

问如何确定SOLR索引的字段类型?
EN

Stack Overflow用户
提问于 2010-01-22 16:16:43
回答 1查看 14K关注 0票数 16

MySQL表中有两个表字段。一个是VARCHAR,是一个分类(分类网站)的“标题”。另一种是文本字段,包含分类的文本。

两个问题:

如何确定这两个字段的索引?(什么字段类型,使用什么类等等)

目前,我有一个"ad_id“作为每个广告的唯一标识符,例如"bmw_m3_82398292”。

如何使SOLR在SOLR?找到“查询匹配”时返回此标识符(标识符的第一部分实际上是标题字段内容,第二部分是所选的随机数)

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-01-22 18:21:30

1.计划

Solr架构很大程度上取决于您预期的搜索行为。在您的schema.xml文件中,您将看到许多选项,如"text“和"string”。他们的行为不同。

代码语言:javascript
复制
<fieldtype name="string" class="solr.StrField" sortMissingLast="true"     omitNorms="true"/>

字符串字段类型是文字字符串匹配。它的操作类似于SQL语句中的==。

代码语言:javascript
复制
<fieldtype name="text_ws"   class="solr.TextField"          positionIncrementGap="100">
  <analyzer>
    <tokenizer class="solr.WhitespaceTokenizerFactory"/>
  </analyzer>
</fieldtype>

text_ws字段类型进行标记化。然而,text字段的一个很大的不同是用于停止词、分隔符和小写的过滤器。注意这些过滤器是如何为Lucene索引和Solr查询指定的。因此,在搜索文本字段时,它将使用这些筛选器来调整查询项,以帮助查找匹配项。

代码语言:javascript
复制
<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>

例如,在为诸如新闻报道之类的事物编制索引时,您可能希望以不同的方式搜索公司名称和标题。

代码语言:javascript
复制
<field name="headline" type="text" />
<field name="coname" type="string" indexed="true" multiValued="false" omitNorms="true" />

上面的例子将允许您进行像&coname:Intel&headline:processor+specifications这样的搜索,并检索精确命中英特尔故事的匹配。

如果你想搜索一个范围

2.成果领域

可以在RequestHandler中定义一组标准的返回字段。

代码语言:javascript
复制
<requestHandler name="mumble" class="solr.DisMaxRequestHandler" >
    <str name="fl">
        category,coname,headline
    </str>
</requestHandler>

还可以使用fl参数在查询字符串中定义所需的字段。

代码语言:javascript
复制
/select?indent=on&version=2.2&q=coname%3AIn*&start=0&rows=10&fl=coname%2Cid&qt=standard

您还可以使用选择范围语法在查询项中使用field:[x TO *]。如果希望按日期选择某些广告,则可以使用

代码语言:javascript
复制
ad_date:[20100101 TO 20100201]

在你的查询术语中。(搜索范围有很多种方法,我介绍了一个使用整数而不是日期类的方法。)

票数 29
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2118634

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档