Я использую Apache Solr и использую следующий запрос для поиска
http://Siteurl:8080/solr/metro/select?q=*:*&rows=0&wt=json&indent=true&facet=true&facet.field=Make
Но в результате предположим, что у меня есть «Ford Fiesta» на марочном поле. Я получаю два результата вместо одного, как показано ниже:
Ford => 21
Fiesta => 21
Это разделяющее поле пространством.
Я хочу это как
Ford Fiesta => 21
Пожалуйста, дайте мне знать действительный метод для этого.
Спасибо
Проблема очень проста здесь. Вы пытаетесь получить фасет на поле токена (текст). Это означает, что каждый токен будет учитываться отдельно. Я предлагаю вам добавить новое поле (в файле schema.xml), которое вы будете вводить с теми же данными, что и поле Make
(например, используя поле копирования). Это новое поле должно быть строкой или текстом с KeywordTokenizer.
Пожалуйста, посмотрите на пример ниже. Я добавил туда два типа: string и text_not_tokenized. Затем определены два поля Make_string и Make_nonTokenized. Когда вы сталкиваетесь с каждым из них, вы должны увидеть «Ford Fiesta»
Так что вы можете просто запросить
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">
....
Других решений пока нет …