2013-03-07 14 views
5

Attualmente sto usando Lucene. Il mio requisito è come la casella di ricerca di Facebook. Utente cerca persone e amici. Ma nel mio requisito l'utente ha impostazioni di privacy come nome, posizione, indirizzo email sono visibili a tutti o solo amici. Può mostrare e nascondere questi campi da amici e altri membri della comunità.Plugin ricercabile Grails - Set di risultati di filtraggio

Ho implementato la ricerca semplice in base al nome, alla posizione e all'indirizzo di posta elettronica. Ma ora sto modificando la ricerca sulla base delle impostazioni sulla privacy.

Ecco il mio scenario ..

utente A ha impostazioni di privacy:
nome è visibile solo agli amici
-mail viene mostrato a ognuno
posizione non è mostrato a nessuno.

Se utente X tipo di percorso del utente A nella casella di ricerca, quindi non dovrebbe essere nei risultati. Ma se il tipo X utente Nome di Utente A nella casella di ricerca dovrebbe essere visualizzato perché L'utente A non ha il nome limitato ed è visibile ai suoi amici nelle impostazioni sulla privacy.

Potete per favore guidarmi all'approccio.

Fammi sapere se non ho scritto chiaramente il mio requisito.

seguenti approcci che ho analizzato, il metodo spiegare (Sarà colpito prestazioni complessive)
1- di IndexSearcher
2- Filtri Esplorò ma non poteva ottenere molto

mio approccio:

Ottenere il risultato Imposta sulla base del nome
Ottenere il risultato Imposta sulla base della posizione
Ottenere il resultSet sul basisi dell'indirizzo di posta elettronica

Loop su ogni set di 3 risultati e applicare le condizioni relative alle impostazioni sulla privacy ed escludere le voci sulla base delle impostazioni sulla privacy. E alla fine unisci tutti e 3 i risultati impostati.

Se esiste un altro approccio? Per favore condividi con me. Grazie.

+0

Ho anche analizzato come funziona l'evidenziatore. Ma controlla solo dal testo. –

risposta

1

potrebbe essere possibile utilizzare la sintassi di query lucene in plug-in ricercabile per creare query lucene in base alle esigenze.

si possono trovare here o here

è possibile limitare seaching sovrascrivendo impostazioni di proprietà predefinite. Hai solo bisogno di applicare come questo ....

class A { 
     String x 
     String y 
     String z 

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

Utilizzando questo è possibile limitare le proprietà ricercabili.

Problemi correlati