Solr - Constrain Больше нравится только этот результат - PullRequest
0 голосов
/ 10 декабря 2018

Допустим, у меня есть особый свитер с code:blue-sweater, то есть color:blue.Я хотел бы найти похожие продукты, используя поле description, с условием, что подобные продукты не синего цвета (-color:blue).

Из Solr wiki :

Если вы хотите отфильтровать аналогичные результаты, предоставленные MoreLikeЭто вам необходимо использовать MoreLikeThisHandler.Он будет рассматривать аналогичный набор результатов документа в качестве основного, поэтому к нему будут применены указанные фильтры (fq).Если вы используете MoreLikeThisComponent и применяете фильтры запросов, он будет применен к результирующему набору, возвращаемому основным запросом (QueryComponent), а не к набору, возвращенному MoreLikeThisComponent.

Это параметры I 'м с использованием;параметр qt устанавливает обработчик запроса как MoreLikeThis:

    {
      q: "code:"blue-sweater"",
      qt: "mlt",
      mlt: "true",
      fl: "description,brand,gender,price",
      mlt.boost: "true",
      mlt.fl: "description",
      fq: "-color:"blue"",
      rows: "6",
      mlt.mintf: "0",
      mlt.mindf: "0"
    }

Проблема заключается в том, что я могу указать параметр FilterQuery только один раз, что устанавливает fq для обоих исходных запросов ("код: "blue-sweater") и для результатов MoreLikeThis).

Поскольку фильтр -color:blue исключает мой первоначальный запрос (синий свитер), у меня не осталось результатов MoreLikeThis. Как мне получитьвокруг этого?

Если единственными продуктами в ядре являются color:blue, я все еще хочу их вернуть, но они должны быть в нижней части возможных результатов.

Редактировать

Я немного покопался, и кажется, что единственный способ повысить запрос MoreLikeThis - это mlt.qf:

Поля запроса и их повышения, используя те жеформат, используемый в анализаторе запросов DisMax. Эти поля также должны быть указаны в mlt.fl. ( source )

Я попытался выполнить обычный запрос с помощью DisMaxсинтаксический анализатор с ограничением значения (например, in_stock:[* TO 10]), но с ограничением на полеЗначение d полностью игнорируется.Вы можете делать только обычные бусты на поле (color^2).

Таким образом, кажется, что это ограничение MoreLike, так как оно полагается на анализатор DisMax вместо EdisMax.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...