Усиление Lucene с помощью солнечных пятен - PullRequest
1 голос
/ 15 ноября 2010

У меня проблема с синтаксисом запроса Lucene Term [Boosting] [1], особенно в Ruby on Rails через гем sunspot_rails.Здесь вы можете указать вес определенного термина во время запроса, и он не связан с весом конкретного поля.

HTML-запрос, генерируемый sunspot, использует параметр qf для указания полей, которые должны бытьвыполняется поиск по настроенному параметру q для самого запроса.Когда символ каретки добавляется к поисковому термину для указания повышения (т. Е. Q = searchterm ^ 5), он не возвращает результатов, даже если результаты будут возвращены без условия повышения.

Если, с другой стороны,Я создаю HTTP-запрос вручную и вручную указываю поле для поиска (q = title_texts: searchterm ^ 5), результаты возвращаются и оценки, похоже, влияют на повышение.

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

Мое приложение вызывает поиск по нескольким полям, используя соответствующие повышения, связанные с этими полями, условно в свою очередь с усилением отдельных условий запроса.

Есть идеи?

[1]: http://lucene.apache.org/java/2_9_1/queryparsersyntax.html#Boosting Срок

Ответы [ 2 ]

2 голосов
/ 15 ноября 2010

Sunspot использует синтаксический анализатор dismax для полнотекстового поиска, который исключает обычный синтаксис запроса Lucene в пользу ограниченного (но удобного для пользователя) синтаксиса запроса в сочетании с набором дополнительных параметров (таких как qf), которые можно построитьклиентским приложением, чтобы настроить работу поиска.Sunspot обеспечивает поддержку для каждого поля с использованием метода boost_fields в полнотекстовом DSL:

http://outoftime.github.com/sunspot/docs/classes/Sunspot/DSL/Fulltext.html#M000129

1 голос
/ 02 декабря 2010

Решение, которое я нашел, состоит в том, чтобы использовать DisMax, но добавив параметр bq с логической строкой с увеличенными терминами в ней.

...