Se você achar esse plugin útil, considere uma doação para mostrar seu apoio!
www.paypal.com/cgi-bin/webscr?cmd=_send-meney
Endereço do PayPal: [email protected]
Este plug-in permite que a pesquisa de textos completos booleanos seja adicionada a qualquer aplicativo Rails sem dependências e configuração mínima.
Gem 'Acts_as_indexed'
Executar bundle install . Feito.
./script/plugin install git: //github.com/dougal/acts_as_indexed.git
Se você não possui o Git instalado, mas ainda deseja o plug -in, pode baixar o plug -in da página do Github (github.com/dougal/acts_as_indexed) e descompactar -o no diretório vendor/plugins do aplicativo de seus trilhos.
Ao atualizar para uma nova versão do ACTS_AS_Indexed, é recomendável que você exclua o diretório de índice e permita que ele seja reconstruído.
Adicione acts_as_indexed ao topo de todos os modelos que você deseja indexar, juntamente com uma lista dos campos que você deseja ser indexada.
Classe Post <ActiveRecord :: Base Atos_as_indexed: campos => [: título ,: body] ... fim
Os campos não se limitam aos campos modelo, mas podem ser qualquer método de instância do modelo atual.
Usuário da classe <ActiveRecord :: Base
Atos_as_indexed: campos => [: endereço ,: FullName]
Def FullName
self.firstname + '' + self.lastname
fim
...
fimQualquer uma das opções de configuração na seção de configuração adicional pode ser adicionada quanto à chamada do método Atos_AS_Indexed. Isso substituirá quaisquer padrões ou configuração global.
Você pode especificar o PROC que precisa avaliar como verdadeiro antes que o item seja indexado. Isso é útil se você deseja que apenas itens com um determinado estado sejam incluídos. O PROC é aprovado na instância do objeto atual para que você possa testar contra isso.
Por exemplo, se você tiver uma coluna visível que seja falsa se a postagem estiver oculta ou verdadeira se estiver visível, poderá filtrar o índice fazendo:
Classe Post <ActiveRecord :: Base
Atos_as_indexed: campos => [: título ,: body] ,: if => proc.new {| post | post.Visible? }
...
fim Para pesquisar com as correspondências mais relevantes que aparecem primeiro, ligue para o método find_with_index em seu modelo, passando uma consulta como o primeiro argumento. O parâmetro opcional ids_only , quando definido como true, retornará apenas os IDs de qualquer registro correspondente.
# Retorna a matriz de objetos post ordenados por relevância. my_search_results = post . find_with_index ( 'minha consulta de pesquisa' ) # Passe qualquer uma das opções do ActiveRecord para obter opções para a pesquisa. my_search_results = post . find_with_index ( 'minha consulta de pesquisa' , { : limite => 10 }) # Retorne as 10 primeiras correspondências. # Retorna a matriz de IDs encomendados por relevância. my_search_results = post . find_with_index ( 'minha consulta de pesquisa' , {}, { : ids_only => true }) # => [12,19,33 ...
Se a relevância dos resultados não for importante, ligue para o escopo de nome de with_query em seu modelo, passando uma consulta como argumento.
# Retorna a matriz de objetos de postagem. my_search_results = post . with_query ( 'minha consulta de pesquisa' ) # Corrente com qualquer número de métodos ActiveRecord e nomeado_scopes. my_search_results = post . público . with_query ( 'minha consulta de pesquisa' ). Encontre ( : todos , : limite => 10 ) # Retorne as 10 primeiras partidas públicas.
Os seguintes operadores de consulta são suportados:
Esta é a opção padrão. 'CAT DOG' encontrará discos de combinação de 'gato' e 'cachorro'.
'Cat -dog' encontrará registros correspondentes a 'gato' e não 'cachorro'
'Cat +me' encontrará registros correspondentes 'Cat' e 'Me', mesmo que 'eu' seja menor que o min_word_size
Os termos citados são comparados como frases. '“Cat Dog”' encontrará registros correspondentes a toda a frase. Termos citados podem ser precedidos pelo operador NOT; 'Cat -“Big Dog”' etc. Os termos citados podem incluir palavras mais curtas que o min_word_size .
Os termos que começam com ^ corresponderão a registros que contêm uma palavra começando com o termo. '^gat' encontrará fósforos contendo 'gato', 'catapulta', 'lagarta' etc.
Um termo citado que começa com ^ corresponde a qualquer frase que comece com essa frase. '^“Cat D”' encontrará registros que combinam com todas as frases “CAT DOG” e “CAT DING”. Esse tipo de pesquisa é útil para entradas de preenchimento automático.
A paginação é suportada pelo método de paginate_search , cujo primeiro argumento é a consulta de pesquisa, seguida por todos os argumentos padrão Will_Paginate.
@images = imagem . paginate_search ( 'garota' , : página => 1 , : per_page => 5 )
Como with_query é um escopo nomeado, Willpaginate pode ser usado da maneira normal.
@images = imagem . With_Query ( 'Girl' ). paginate ( : página => 1 , : per_page => 5 )
Um bloco de configuração pode ser fornecido em seus arquivos de ambiente ou inicializadores. Exemplo mostrando a alteração do tamanho da palavra min:
AtosIndexed . Configurar do | config | Config . min_word_size = 3 # Mais configuração conforme necessário ... fim
Um resumo completo das opções de configuração disponível pode ser encontrado em lib/acts_as_indexed/configuration.rb
Atua como indexado suporta a Heroku pronta para uso. O índice é criado no diretório TMP, que é a única parte escritos do sistema de arquivos Dyno Heroku. Leia a documentação do Heroku (devCenter.heroku.com/articles/read-lly-filesystem) sobre seu sistema de arquivo.
Veja a documentação do RDOC online.
Todos os itens acima são bem -vindos. [email protected]
Um enorme agradecimento a todos os colaboradores desta biblioteca. Sem eles, muitas correntes e recursos não teriam acontecido.
Douglas F Shearer - Douglasfshearer.com
Thomas Pomfret
Philip Arndt
Fernanda Lopes
Alex Coles
Myles Eftos
Edward Anderson
Florent Guilleux
Ben Anderson
Theron Toomey
Uģis ozols
Gabriel Namiman
Roman Samilov
David Turner
Pascal Hurni
Ryan Kopf
No momento, acts_as_indexed funciona apenas com caracteres unicode quando usado da seguinte maneira:
https://gist.github.com/193903bb4e0d6e5debe1
Reescrevi o processo de tokenização para permitir o manuseio mais fácil disso no futuro.