В основе инстумента "Поиск" лежит индексирование материалов с помощью нескольких субиндексов. Во время простого поиска используются только два из них: контекст и содержимое. Содержимое состоит из снабженного метками полнотекстового указателя документов сохраняемого и размеченного индекса систематизированной формы контента. Это значит, что из документа Word, загруженного в Ресурсы, будет извлечен и проиндексирован весь текст, а из видеоролика - только метаданные. В результатах поиска отображается именно содержимое с выделенными в нем цветом словами поиска.
Контекст - это индекс источника содержимого на основе ключевых слов. Это сайт проекта или курса, на котором хранится содержимое. Когда производится простой поиск, инструмент "Поиск"добавляет к слову поиска +content:<currentsiteid> , где <currentsiteid> - это контекст, или ID сайта, на котором производится поиск. Такой запрос можно перевести как "результаты должны находиться в пределах этого сайта".
При поиске можно пользоваться любыми индексами. Например, можно искать только среди объявлений. Тогда запрос может выглядеть так: +tool:announcement +content:cowslip , а в результате вы получите только объявления, содержащие слово "cowslip".
Словарный указатель содержит следующие типы индексов:
В основе обработки запросов лежит Apache Lucene. Подробнее смотри на http://lucene.apache.org/java/docs/queryparsersyntax.html.
Запрос состоит из слов и операторов. Слова делятся на отдельные слова и фразы.
Отдельное слово - это просто отдельно взятое слово, например, "тест" или "превед".
Фраза - это группа слов, взятых в кавычки, например, "превед медвед".
Несколько отдельных слов можно объединить с помощью Булевых операторов, чтобы создать более сложный запрос (смотри ниже).
Lucene поддерживает поиск слов, которые находятся на заданном расстояниии друг от друга. Чтобы произвести поиск по окружению, используйте символ "~" в конце фразы. Например, для того, чтобы найти слова "apache" и "jakarta" на расстоянии не более 10 слов друг от друга, используйте запрос:
"jakarta apache"~10
Булевы опрераторы позволяют объединять слова поиска с помощью логических союзов. Lucene позволяет использовать AND, "+", OR, NOT и "-" в качестве Булевых операторов (Внимание: Булевы опреаторы должны указываться ТОЛЬКО ПРОПИСНЫМИ буквами).
OR
OR - это оператор конъюнкции, т.е. знак ИЛИ. Он является Булевым оператором по умолчанию. Иначе говоря, если между словами не стоит никакой Булев оператор, то запрос обрабатывается , будто между ними стоит OR. Этот оператор связывает два слова поиска, а результатом поиска считается документ, в котором встречается хотя бы одно из этих слов. Вместо слова OR можно использовать символ || .
Чтобы найти документы, которые содержат "jakarta apache" или посто "jakarta", используйте запрос:
"jakarta apache" jakarta
или
"jakarta apache" OR jakarta
AND
Оператору AND удовлетворяют документы, в которых присутствуют оба слова поиска, неважно, в каком месте документа каждое из них находится. Вместо слова AND можно использовать символ && .
Чтобы найти документы, которые содержат "jakarta apache" и "Apache Lucene", используйте запрос:
"jakarta apache" AND "Apache Lucene"
+
Оператор "+" указывает, что в искомом документе должно обязательно встречаться слово, которое идет после "+".
Например, чтобы найти документы, которые должны содержать слово "jakarta" и возможно, также содержат слово "apache", используйте запрос:
+jakarta apache
NOT
Оператор NOT исключает из результатов поиска слово после NOT. Вместо слова NOT можно использовать сиимвол !
Чтобы найти документы, которые содержат "jakarta apache", но не содержат "Apache Lucene", используйте запрос:
"jakarta apache" NOT "Apache Lucene"
Внимание: Оператор NOT нельзя использоватиь в запросах, в которых участвует лишь одно слово. Например, такой поиск результатов не принесет:
NOT "jakarta apache"
Оператор "-" исключает из результатов поиска документы, которые содержат слово, указанное после символа "-".
Чтобы найти документы, которые содержат "jakarta apache", но не содержат "Apache Lucene", используйте запрос:
"jakarta apache" -"Apache Lucene"
Lucene позволяет с помощью круглых скобок группировать условия поиска, чтобы формировать подзапросы. Это удобно, если вы применяете в запросах Булевы операторы.
Чтобы найти документ, в котором встречается одно из слов "jakarta" или "apache", и еще обязательно встречается "website", используйте запрос:
(jakarta OR apache) AND website
Необходимо избегать в тексте поиска специальных символов, которые используются в синтаксисе языка запросов:
+ - && || ! ( ) { } [ ] ^ " ~ * ? : \
Если вам нужно употребить какие-либо из этих символов в стоке поиска, ставьте знак \ перед ним. Например, для поиска формулы (1+1):2 придется составить запрос вида:
\(1\+1\)\:2