Вопрос

Я использую Solrnet для доступа к индексу Solr, где у меня есть поле Multivalue под названием «Теги». Я хочу выполнить следующий запрос псевдокода:

(теги: стек)^10 или (теги: Over)^5 или (теги: поток)^2

Если термин «стек» повышается на 10, «над» увеличивается на 5, а «поток» повышается на 2. Результат, который я после, - это результаты с «стеком», появляющимися выше, чем у тех, у кого »» поток »и т. д.

Проблема, которую я столкнулся, заключается в том, что «поток» появляется только в нескольких документах, но «стек» появляется в нагрузках, затем из -за высокого значения IDF документы с «потоком» появляются выше, которые с «стеком».

Когда это был проект, был реализован прямо в Lucene, я использовал Constantscorequery, и они устранили IDF на основе оценки исключительно на значении повышения.

Как это можно достичь с помощью Solr и Solrnet, где я эффективно просто передаю Solr строку запроса? Если это невозможно, есть ли альтернативный способ подойти к этой проблеме?

Заранее спасибо!

Это было полезно?

Решение

Я не думаю, что в Solr в Solr непосредственно выражать константы, но кажется, что это Диапазон и префикс запросов используйте ConstantsCorequery под капюшоном, так что вы могли бы попробовать притвориться линейным запросом, например, tags:[flow TO flow]

В качестве альтернативы вы можете реализовать свой собственный Solr QueryParser.

Другие советы

Solr 5.1, а затем встроен в синтаксис анализатора запроса через оператор ^=.

Так что просто возьмите исходный запрос: (теги: стек)^10 или (теги: Over)^5 или (теги: поток)^2

И замените^на^= для перехода с повышения на постоянную: (теги: стек)^= 10 или (теги: Over)^= 5 или (теги: поток)^= 2

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top