Solr: лучший способ сопоставить "при луне наса" с "при луне" с помощью фразы запроса?

У меня есть индекс около 500000 документов, и около 10 из этих документов содержат заголовок "на луне" (поле "title") и тег "nasa" (поле "tag"). Когда я выполняю поиск "на луне наса", эти документы попадают довольно далеко в список результатов поиска. Это связано с тем, что поле заголовка не увеличивается, но поле тега увеличивается немного. Таким образом, другие документы с тегом "nasa" имеют приоритет над документами, которые почти соответствуют всему запросу через поле заголовка.

Однако, хотя Solr не может знать, запрос "at the moon nasa" почти соответствует заголовку документа "at the moon". Если я удалю часть "НАСА" из запроса, документы появятся вверху.

Есть ли какой-нибудь способ сказать Solr сделать какой-то примерный запрос фразы? Имеет ли смысл реализовывать какой-либо поиск по грамматике через параметр bq, где я бы разбил поисковую фразу на такие словосочетания, как:

// PHP-ish pseudocode
$bq[]=title:"at the"^2
$bq[]=title:"at the moon"^3
$bq[]=title:"at the moon nasa"^4
$bq[]=title:"the moon"^2
$bq[]=title:"the moon nasa"^3
$bq[]=title:"moon nasa"^4

Будет ли это вообще иметь смысл и имеет ли смысл повышать количество документов в зависимости от того, насколько большой части запроса они соответствуют?

1 ответ

Прежде чем делать что-либо еще, попробуйте использовать eDisMax с параметром pf3. Это делает 3 грамма для вас автоматически.

Вам также может быть интересен недавний проект vifun, который помогает визуализировать эффекты различных параметров.

Другие вопросы по тегам