Apache Solr поиск фасетов исключить пробел

Я использую 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

Пожалуйста, дайте мне знать действительный метод для этого.

Спасибо

0

Решение

Проблема очень проста здесь. Вы пытаетесь получить фасет на поле токена (текст). Это означает, что каждый токен будет учитываться отдельно. Я предлагаю вам добавить новое поле (в файле 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">
....
4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]