Uma consulta é dividida em termos e operadores. Existem dois tipos de termos: Termos Simples e Frases.
Um Termo Simples é somente uma palavra, como "teste" ou "olá".
Uma Frase é um grupo de palavras entre aspas duplas, como "Olá querida".
Múltiplos termos podem ser combinados juntos, através de operadores lógicos (booleanos) para formar consultas mais complexas (veja abaixo).
O mecanismo de busca suporta dados separados em campos. Quando executando uma pesquisa você pode tanto especificar um campo, como utilizar o campo padrão. O nome dos campos depende da implementação.
Você pode pesquisar qualquer campo digitando o nome do campo seguido de um dois pontos ":" e o termo pelo qual você está procurando.
Como um exemplo, assuma que o índice possua dois campos, título e texto, e texto é o campo padrão. Se você quer procurar pelo documento entitulado "The Right Way" o qual contém o texto "don't go this way", você pode digitar:
título:"The Right Way" AND texto:go
Ou
título:"Do it right" AND right
Uma vez que texto é o campo padrão, o indicador de campo não é requerido.
Nota: O campo é válido somente para o termo que ele precede imediatamente. Assim a consulta
título:Do it right
Irá encontrar "Do" no campo título somente. Os termos "it" e "right" serão procuradas no campo padrão (neste caso, o campo texto).
O mecanismo de busca suporta modificadores de termo para oferecer uma grande gama de opções de busca.
O mecanismo de busca suporta caracteres curinga simples e múltiplos nas buscas.
Para executar uma busca com um caractere curinga simples, utilize o símbolo "?".
Para executar uma busca com um caractere curinga múltiplo, use o símbolo "*".
O caractere curinga simples busca por termos que correspondam com o posição marcada substituída. Por exemplo, para pesquisar por "para" ou "pare", você pode executar a busca:
par?
O caractere curinga múltiplo busca por 0 ou mais caracteres. Por exemplo, para pesquisar por "par", "para", "pare", "paraquedas" e outros termos iniciados por "par", execute a seguinte consulta:
par*
Você também pode utilizar o caractere curinga no meio de um termo:
pa*e
IMPORTANTE: Você não pode utilizar os símbolos * or ? como primeiro caracter em sua consulta.
O mecanismo de busca suporta busca textual utilizando baseado no algorítmo Levenshtein Distance, ou Edit Distance.
Para executar uma consulta textual, use o til, "~", ao final de um termo simples.
Por exemplo, para buscar por palavras cuja sonoridade seja semelhantes a "César", use seguinte expressão:
césar~
Esta expressão irá localizar termos como "cesar" (sem acento), "cedar", "cezar", "cézar", e assim por diante.
O mecanismo de busca suporta pesquisa de palavras que estejam a uma determinada distância uma da outra.
Para fazer uma busca de proximidade, utilize o símbolo til, "~" ao final da frase, seguido do número máximo de palavras que podem estar entre cada termo.
Por exemplo, para pesquisar por "são" e "norte", com até 2 palavras entre elas, use a seguinte expressão:
"são norte"~2
Consulta por intervalos permitem localizar documentos nos quais os valores dos campos estejam dentro do intervalo mínimo e máximo.
Consultas de intervalo ode ser inclusivas ou exclusivas, para os limites superior e inferior.
A ordenação é feita lexicograficamente.
data alteracao:[20020101 TO 20030101]
Isto irá localizar os documentos cujo campo data alteração esteja no intervalo entre 20020101 e 20030101, inclusive.
Note que as consultas por intervalos não são reservadas somente para campos do tipo data.
Você também pode pesquisar por intervalos em outros tipos de campos:
título:{Aida TO Carmen}
Esta expressão irá localizar todos os documentos cujos títulos estejam entre Aida e Carmen, porém não incluindo estes termos (exclusiva).
Intervalos inclusivos são denotados por símbolos "[" e "]".
Intervalos exclusivos são denotados por símbolos "{" e "}".
O mecanismo de busca provê um mecanismo de relevância dos termos localizados baseado nos termos pesquisados.
Para dar preferência a um termo, utilize o acento circunflexo ("^") com o fator de preferência (um número) ao final do termo que está sendo procurado. Quanto maior o fator, mais relevante o termo será (logo, mais no início da lista resultado irá aparecer).
Preferência permite a você controlar a relevância do documento. Por exemplo, se você está procurando por
jakarta apache
e você deseja que o termo "jakarta" seja mais relevante, modifique sua preferência usando o símbolo ^ e o fator de preferência em seguida do termo. Você irá digitar:
jakarta^4 apache
Isto irá fazer com que os documentos com o termo jakarta pareçam mais relevantes. Você pode inclusive dar preferência para frases também, como neste exemplo:
"jakarta apache"^4 "jakarta lucene"
Por padrão, o fator de preferência é 1.
IMPORTANTE: Apesar do fator precisar obrigatoriamente ser positivo, ele pode ser menor que 1 (ex: 0.2).
Operadores booleanos termos serem combinados com outros operadores lógicos. O mecanismo de busca suporta AND, "+", OR, NOT e "-" como operadores booleanos (Nota: Operadores booleanos devem sempre estar em MAIÚSCULAS).
O operador OR (ou lógico) é o operador padrão de conjunção. Isto significa que se não houver um operador entre dois termos, o operador OR será utilizado. O operador OR liga dois termos e localizar documentos correspondentes a qualquer um dos termos que exista no documento. Isto é equivalente a união na teoria dos conjuntos. O símbolo || pode ser utilizado no lugar da palavra OR.
Para buscar termos que contenham tanto "jakarta apache" ou somente "jakarta" use a consulta:
"jakarta apache" jakarta
Ou
"jakarta apache" OR jakarta
O operador AND localiza documentos onde ambos os termos existam em qualquer parte do campo em um único documento. Isto é o equivalente a uma intersecção na teoria dos conjuntos. O símbolo && pode ser utilizado no lugar da palavra AND.
Para buscar por documentos que contenham "jakarta apache" e "jakarta lucene" use a consulta:
"jakarta apache" AND "jakarta lucene"
O operador "+" requer a existência obrigatória do termo em qualquer parte do campo.
Para buscar termos que tenham o termo "jakarta", e que tenham ou não o termo "lucene", use a seguinte consulta:
+jakarta apache
O operador NOT exclui documentos que contenham o termo que ele precede. Isto é o equivalente a diferença na teoria dos conjuntos. O símbolo ! pode ser utilizado no lugar da palavra NOT.
Para buscar documentos que tenham "jakarta apache", mas não tenham "jakarta lucene" execute a consulta:
"jakarta apache" NOT "jakarta lucene"
Nota: O operador NOT não pode ser utilizado em consultas com somente um termo ou frase. Por exemplo, a seguinte consulta não retornará nenhum resultado:
NOT "jakarta apache"
O operador "-" ou operador de proibição exclui documentos que contenham o termo que aparece imediatamente após.
Para localizar documentos que contenham "jakarta apache" mas não "jakarta lucene" use a seguinte consulta:
"jakarta apache" -"jakarta lucene"
O mecanismo de busca suporta o uso de parêntesis para agrupar as cláusulas e formar sub-consultas. Isto é muito útil se você deseja controlar a lógica booleana de uma consulta.
Para buscar por "jakarta" ou "apache" e "website", você deverá usar a seguinte consulta:
(jakarta OR apache) AND website
Isto elimina a confusão que possa haver e garante que "website" precisará existir, e tanto "jakarta" ou "apache" poderão existir.
O mecanismo de busca suporta o uso de parentesis para agrupar múltiplas cláusulas em um único campo.
Para buscar por um título que contenha tanto a palavra "return" quando a frase "pink panther", execute a consulta:
título:(+return +"pink panther")
O mecanismo de busca suporta o uso de caracteres especiais que fazem parte da sintaxe das consultas utilizando um símbolo "" imediatamente antes do caractere especial. A lista corrente de caracteres especiais que devem ser precedidos por "\" é
- && || ! ( ) { } [ ] ^ " ~ * ? : \
Para utilizar algum destes caracteres em uma consulta como qualquer outro símbolo ordinário, utilize o caractere "" antes do caractere. Por exemplo, para pesquisar por (1+1):2, utilize a consulta:
\(1\+1\)\:2