Подсветка в Solr 1.4 - requireFieldMatch - PullRequest
1 голос
/ 31 марта 2010

У меня есть объект

Title   : foo
Summary : foo bar
Body    : this is a published story about a foo and a bar

Все три поля заданы как поля с сохраненным значением = true.

Пользователь ищет в моей системе слово

"foo"

Я бы хотел выделить foo во всех трех местах.

Пользователь ищет слово foo в заголовке

"title:foo"

Я только хочу выделить foo в заголовке.

Когда я добавил hl.requireFieldMatch=true и hl.usePhraseHighlighter=true как часть моего запроса к SOLR Я не могу получить выделение во всех трех местах при выполнении общего поиска без полей. Есть ли способ заставить оба сценария работать?

У меня были отключены эти два элемента, но я добавляю в некоторые области запроса, которые пользователь не видит, например, которые отображают только Опубликованные элементы. проблема

(foo AND status:published)

вызывает выделение слова, публикуемого в теле, когда пользователь только ищет слово "foo".

1 Ответ

1 голос
/ 01 апреля 2010

Оказывается, что это может быть скорее причуда с act_as_solr, чем с solr / lucene.

Я воспользовался опцией fq в solr http://wiki.apache.org/solr/CommonQueryParameters#fq

запрос больше не выглядит как

(foo AND status:published)

больше похоже на

q=foo&fq=status:published

когда оно достигает Solr

fq не влияет на выделение, и кажется, что это лучший способ сделать это, поскольку вы получаете некоторые преимущества кэширования solr.

Все еще есть ошибка / функция, не реализованная с act_as_solr, которая также должна использовать это преимущество.

Например, если моя модель называется article, а пользователь ищет слово article, AAS создает закулисный запрос, похожий на

(article AND type_t:article)

Это вызывает ту же проблему, что слово article выделяет повсеместно, когда вы этого не хотите, а также когда пользователь ищет термин «article», он возвращает каждый отдельный объект в системе. * * 1021

Быстро взглянул на вилки GitHub для activ_as_solr и не увидел никого, кто бы это реализовал. Внутри parser_methods.rb

есть хороший #TODO.
...