我正在使用Apache Solr并使用以下查询进行搜索
http://Siteurl:8080/solr/metro/select?q=*:*&rows=0&wt=json&indent=true&facet=true&facet.field=Make
但结果让我们假设我在制造领域有"福特嘉年华"。我得到两个结果而不是一个,如下所示:
Ford => 21
Fiesta => 21
它逐个分隔场。
我想要它像
Ford Fiesta => 21
请让我知道这样做的有效方法。
谢谢
这里的问题很简单。您正在尝试在标记化字段(文本)上进行分面。这意味着每个代币将单独计数。我建议您添加新字段(在模式.xml文件中),您将提供与字段Make
相同的数据(例如使用复制字段)。这个新字段应该是带有关键字标记器的字符串或文本。
请看下面的例子。我在那里添加了两种类型:字符串和text_not_tokenized。然后定义了两个字段Make_string和Make_nonTokenized。当您在它们中的每一个刻面时,您应该会看到"福特嘉年华"
所以你可以只查询
http://Siteurl:8080/solr/metro/select?q=*:*&rows=0&wt=json&indent=true&facet=true&facet.field=Make_string
或
http://Siteurl:8080/solr/metro/select?q=*:*&rows=0&wt=json&indent=true&facet=true&facet.field=Make_nonTokenized
.
...
<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">
....