首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >搜索排除空间

搜索排除空间
EN

Stack Overflow用户
提问于 2014-12-05 12:46:49
回答 1查看 827关注 0票数 0

我正在使用Apache,并使用以下查询进行搜索

代码语言:javascript
复制
http://Siteurl:8080/solr/metro/select?q=*:*&rows=0&wt=json&indent=true&facet=true&facet.field=Make

但作为结果,让我假设我有‘福特嘉年华’在制造领域。我得到了两个结果,而不是一个,如下所示:

代码语言:javascript
复制
Ford => 21
Fiesta => 21

它是由空间分离的场。

我想要就像

代码语言:javascript
复制
Ford Fiesta => 21

请告诉我这样做的有效方法。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-05 16:39:05

这里的问题很简单。您正在尝试对标记化字段(文本)进行分面。这意味着每个令牌将被单独计算。我建议您添加新的字段(在schema.xml文件中),您将使用与字段Make相同的数据(例如。使用复制字段)。这个新字段应该是带有KeywordTokenizer的字符串或文本。

请看下面的例子。我添加了两种类型: string和text_not_tokenized。然后定义了两个字段Make_string和Make_nonTokenized。当你对他们的每一个面,你应该看到“福特嘉年华”。

所以你可以直接查询

代码语言:javascript
复制
http://Siteurl:8080/solr/metro/select?q=*:*&rows=0&wt=json&indent=true&facet=true&facet.field=Make_string

代码语言:javascript
复制
http://Siteurl:8080/solr/metro/select?q=*:*&rows=0&wt=json&indent=true&facet=true&facet.field=Make_nonTokenized

代码语言:javascript
复制
...
<fieldType name="string" class="solr.StrField" sortMissingLast="true" />
<fieldType name="text_not_tokenized" class="solr.TextField">
  <analyzer>
    <tokenizer class="solr.KeywordTokenizerFactory"/>
  </analyzer>
</fieldType>
...
<field name="Make_string" type="string">
<field name="Make_nonTokenized" type="text_not_tokenized">
....
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27316221

复制
相关文章

相似问题

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