2013-02-21 3 views
1

Я пытаюсь настроить обработчик возвышения в SOLR 3.5.0, и мне нужен эквивалент нижеследующего запроса в формате сжатия, который определяет разные значения boost в одном и том же поле в зависимости от типа соответствия (точное совпадение получается 200, тогда как подстановочный знак получает 100).Аналогичный запрос Solr DisMax

д = имя: (Foo *^100,0 OR Foo^200,0)

ответ

0

Это один из способов решить эту проблему.

Сохраните текстовое поле с помощью только WhiteSpaceTokenizer (и, возможно, LowerCaseFilter в зависимости от ваших потребностей в чувствительности к регистру). Используйте это поле для точного соответствия. Назовем это поле name_ws.

Вместо того чтобы использовать запрос диких карт на name_ws используйте тип текста copy field с EdgeNGramTokenizer в вашем анализаторе цепи, которые будут выводить маркера как:

food -> f, fo, foo, food

Давайте назовем это поле name_edge.

Тогда вы можете оформить этот dismax запрос: (. Добавить debugQuery=on проверить, если скоринг работает так, как вы хотите)

q=foo&defType=dismax&qf=name_ws^200+name_edge^100