2013-03-07 11 views
5

Obecnie używam Lucene. Moje wymaganie jest jak pole wyszukiwania facebook. Wyszukaj użytkowników i znajomych. Ale w moim wymaganiu użytkownik ma ustawienia prywatności, takie jak imię, lokalizacja, adres e-mail są widoczne dla wszystkich lub tylko znajomych. Może pokazywać i ukrywać te pola przed przyjaciółmi i innymi członkami społeczności.Grails Searchable Plugin - Filtering Result Set

Zaimplementowałem proste wyszukiwanie na podstawie nazwy, lokalizacji i adresu e-mail. Ale teraz modyfikuję wyszukiwanie na podstawie ustawień prywatności.

Tu jest mój scenariusz ..

Użytkownik A ma ustawienia prywatności:
Nazwa jest widoczne tylko dla znajomych
email jest pokazane na każdy jeden
lokalizacja nie jest pokazany jednego.

Jeśli User X lokalizacja typ użytkownikowi w polu wyszukiwania to nie powinno być w wynikach. Ale jeśli użytkownik X type Nazwa Użytkownik A w polu wyszukiwania, powinien on zostać wyświetlony, ponieważ Użytkownik A nie ograniczył nazwy i jest widoczny dla jego znajomych w ustawieniach prywatności.

Czy możesz mnie poprowadzić do podejścia.

Daj mi znać, jeśli nie napisałem wyraźnie mojego wymogu.

mam analizowane następujące podejścia, wyjaśnić sposób (To będzie hit ogólną wydajność)
1- IndexSearcher za
2- zbadane Filtry ale nie mógł uzyskać znacznie

moje podejście:

Pobierz wynikUstaw na podstawie nazwy
Otrzymaj wynikUstaw na podstawie lokalizacji
Pobierz wynik Ustaw na podstawie adresu e-mail

Zapętlaj na każdym zestawie wyników 3 i stosuj warunki związane z ustawieniami prywatności i wykluczaj elementy na podstawie ustawień prywatności. I na koniec połącz wszystkie 3 zestawy wyników.

Jeśli istnieje inne podejście? Proszę, podziel się ze mną. Dzięki.

+0

Przeanalizowałem także sposób działania zakreślacza. Ale sprawdza się tylko od tekstu. –

Odpowiedz

1

Możliwe, że możesz użyć składni kwerendy lucenu w przeszukiwanej wtyczce do tworzenia kwerendy lucenu zgodnie z wymaganiami.

można znaleźć here lub here

można ograniczyć seaching nadrzędnymi ustawienia właściwości domyślnych. Trzeba tylko zastosować ...

class A { 
     String x 
     String y 
     String z 

    static searchable = [only: ['x', 'y']] 
    // … 
} 

Za pomocą tego można ograniczyć wyszukiwanie właściwości.

Powiązane problemy