2016-01-19 2 views
0

Я использую solr 4.10. Я должен изменить релевантность документов на основе повышения поля и оценки документов. Для этого я понял, что должен использовать функциональный запрос. Ниже приведен синтаксис поля повышающего в схемеApache Solr неопределенное поле оценки поля в запросе функции

<field name="boost" type="float" stored="true" indexed="false" default="1.0"/> 

Мой первый вопрос, который может функционировать запросы можно использовать только на сохраненных полях?

При попытке с помощью описанной выше схемы, как следующий запрос

http://localhost:8983/solr/select?q=bank&df=keywords&fl=id&sort=pow(score,%20boost)%20asc 

Существовал некоторые ошибки говорят как

sort param could not be parsed as a query, and is not a field that exists in the index: 

я изменил схему как

<field name="boost" type="float" stored="true" indexed="true" default="1.0"/> 

Тогда выше задачи была удалена, но появилась новая ошибка для запроса

http://localhost:8983/solr/select?q=bank&df=keywords&fl=id,pow(score,%20boost) 

После ошибки появились

<lst name="error"> 
<str name="msg">undefined field: "score"</str> 
<int name="code">400</int> 
</lst> 

Где я неправ? Правильно ли изменить атрибуты форсированного поля?

+0

Запустил индексатор (полный индекс) после внесения изменений в файл schema.xml? –

+0

Да, я удалил все документы и снова их индексировал – Shafiq

ответ

0

Я бы порекомендовал использовать функцию повышения и сортировать только по счету (по умолчанию = не требуется параметр порядка).

bf=linear(boost,100,0) 

Вы можете использовать другие функции. Это зависит от вашего использования. Просто проверьте solr docs for function queries.