2016-07-07 4 views
0

У меня есть индекс поиска и требуется запрос lucene, который будет условно искать указанные поля. Конечным результатом будет то, что если вы зашли на сайт, все поля будут найдены, или если вы вышли из системы, указанные поля будут пропущены путем изменения запроса lucene.Lucene - исключить из поиска поля

Ближайший у меня есть на данный момент:

+(term1~ term2~) +_culture:([en-gb TO en-gb] [invariantifieldivaluei TO invariantifieldivaluei]) **-FieldToIgnore1:(term1 term2) -FieldToIgnore2:(term1 term2)** 

Проблема с этим, однако, если один из поисковых терминов существует в одном из полей не упоминается (FieldToIgnore1 или FieldToIgnore2), то документ игнорируется, потому что он исключен, поскольку одно из игнорируемых полей совпадает.

Как это можно изменить, так что lucene даже не совпадает с полями для игнорирования?

+0

Я не уверен, что понимаю. Как правило, довольно легко игнорировать поле. Вы просто * не ищите * в этом поле. Вы используете 'MultiFieldQueryParser' или что-то еще? Или поле поиска по умолчанию - какое-то поле для всех? Или что? – femtoRgon

+0

Извинения. Я не слишком знаком с терминологией Lucene, но я считаю, что это опция для всех полетов. Функциональность создается с помощью интеллектуального поиска Kentico CMS (https://docs.kentico.com/display/K9/Smart+search+syntax), который использует синтаксис синтаксического анализа запросов Lucene (http: //lucene.apache .org/core/3_0_3/queryparsersyntax.html), если это помогает? – ajbrun

+0

В этом случае, вероятно, нет способа определить, из какого поля происходит совпадение. Это «все» поле будет просто большой сумкой слов. Скорее всего, вам нужно будет написать свой запрос для поиска * только * полей, которые вы хотите (или, возможно, указате отдельное поле поиска, которое объединяет только поля, которые вы хотите найти). Однако я ничего не знаю о Kentico, поэтому я не знаю, поддерживает ли она настройку вашего индекса и тому подобное. – femtoRgon

ответ

0

Вместо того, чтобы отсканировать поиск через веб-страницу результатов поиска Lucene и Smart Search, попробовали ли вы изменить возможности поиска самих полей документа. Вы можете задать параметры поиска по типу страницы или самому индексу.

Перейти к странице Типы -> [ваш тип документа] -> Поиск полей и указать, какие поля являются и не подвергаются поиску.

Page Types --> Articles --> Search fields (v.8.2)

Version 9 дает эти параметры в приложении Smart Search. См. these docs.

+0

Спасибо Эмме, я подумал об этом, но тогда отключение поиска для игнорируемых полей не уложится в условный аспект требования, когда, если вы вошли в систему, он будет искать все. Я думаю, возможно, мой единственный вариант - создать индекс пользовательского поиска, который исключает эти поля. Я просто надеялся, что будет более простой вариант, который может быть обработан lucene ... – ajbrun

+0

Если Lucene все еще дергается (у меня смешанный удачи при вводе таких условий, как вы), а область поиска варьируется в зависимости от общих пользователей и пользователей, прошедших проверку подлинности, то то, что вы можете сделать, помещено в два веб-сайта поиска (или результатов поиска). Установите видимость на «Дисплей для ролей: _notauthenticated_», а другой - «Отобразить роли: _authenticated_» – emmaclairez

+0

. Затем веб-страница для зарегистрированных пользователей может ударить по всем полям индекса поиска (пропустить Lucene); другой будет заблокирован для этих полей с помощью Lucene '-term' – emmaclairez

Смежные вопросы