Hai bisogno di consigli sulla funzionalità di ricerca PHP

2

Sto codificando un sito Linux / PHP per un'organizzazione. Il sito ha due viste, attivate da una variabile $ _SESSION di accesso che indica se si è registrati o meno come membri. Devo fornire funzionalità di ricerca sia per il pubblico che per i membri. L'area membri è privata. Tieni presente che in questo caso non è possibile utilizzare la Ricerca personalizzata Google.

Qualcuno ha qualche raccomandazione sugli script F / OSS (o forse script economici che posso acquistare) che fornirebbe questa funzionalità con due indici separati, uno pubblico e uno privato, e che fornirebbe risultati paginati e un modulo di ricerca per parole chiave?

Altrimenti, credo che dovrò codificarne uno anch'io. Sto cercando di risparmiare tempo e quindi tenere più soldi in tasca.

P.S.

Nota Non posso chiederlo a StackOverflow perché vogliono delle domande sul programmatore. Questo non è un "come posso codificare questo?" domanda, ma "quali script F / OSS o sitescripts economici potrebbero risolvere questo problema?" tipo di domanda.

Nota anche che questo non mi aiuterà neanche. Voglio dire, guarda le risposte di quella domanda.

    
posta Volomike 23.05.2011 - 02:13
fonte

2 risposte

1

Ho apprezzato l'utilizzo di ElasticSearch , un motore di ricerca di documenti JSON basato su Lucance, RESTful, schemaless. Mentre è basato su Java, la semplice interfaccia RESTful è un gioco da ragazzi in PHP, e c'è persino una libreria per avvolgere l'interfaccia se preferisci usarla. Mentre si concentra sui dati JSON, include tutta la bontà del testo di Lucene.

Nel tuo caso, dovresti rendere pubblica / privata la natura del contenuto oggetto della ricerca di un attributo nel documento che fornisci all'indicizzatore. Puoi quindi semplicemente includere / escludere l'attributo nelle ricerche quando gli utenti effettuano l'accesso / l'uscita secondo necessità.

Si presume ciecamente che il tuo sito sia alimentato da una varietà di CMS supportati da database. ElasticSearch non è un crawler , devi fornirgli manualmente i documenti JSON che desideri vengano cercati.

    
risposta data 23.05.2011 - 03:24
fonte
0

Penso che (a seconda della struttura esatta del tuo sito "Linux / PHP"), che essenzialmente abbia tre opzioni principali.

Utilizzo di un sistema IR / di ricerca esistente (non PHP)

Potresti (come suggerito nella risposta di Charles ) usare qualcosa come ElasticSearch, o ospitare il tuo Lucene ( link ) o Sfinge ambiente. Sfortunatamente, queste soluzioni hanno alcuni svantaggi abbastanza pesanti (in particolare se il tuo sito è piuttosto piccolo):

  1. Dovrai fornire questi motori con un indice . Quale può (a seconda dell'applicazione) essere semplice come munging di un feed RSS di "post" o "pagine" ecc. Ma potrebbe anche essere abbastanza complesso, se hai un sito grande con nessuna struttura / DB sottostante per ottenere i dati dell'indice

  2. Questi motori di ricerca dovranno essere ospitati , su un VPS, su un altro server o (come con ElasticSearch) su una piattaforma SaaS. Ciò ovviamente aggiungerebbe ulteriore spesa ai tuoi sforzi.

Implementa (o plug-in) una ricerca basata su tag

La ricerca basata su tag ( ala SE), potrebbe essere più semplice in quanto consente ai tuoi utenti di costruire l'indice per te . Ogni volta che un membro etichetta qualcosa, viene aggiunto a un database che può quindi essere cercato per la ricerca membro. Gli ovvi svantaggi qui sono:

  1. Ciò incide i tuoi utenti con la costruzione dell'indice, che può danneggiare l'affidabilità, ecc.

  2. La ricerca di tag e la ricerca di testo completo sono molto cose diverse. I tuoi membri potrebbero perdere molti di risultati senza tag che potrebbero essere pertinenti.

Tuttavia, dal lato positivo questo è probabilmente più economico della prima opzione, e potrebbe essere più veloce da implementare rispetto al prossimo.

Crea il tuo crawler / spider per creare un indice

Come sembra che tu stia sfuggendo al tuo commento, potresti usare wget, curl o la funzione file_get_contents di PHP per recuperare gli URL del tuo sito web (con qualche flag o cookie di richiesta per ottenere l'accesso all'area del membro). Anche se può sembrare clunky (recuperare il tuo contenuto), questo potrebbe essere più semplice della costruzione di un indice te stesso se non esiste alcun database o modello sottostante per qualcosa come Lucene da usare.

Una volta recuperati, devi solo eseguire il tokenize dei dati e archiviarli in qualcosa di simile a un database o altra forma di indice.

    
risposta data 26.09.2015 - 10:36
fonte

Leggi altre domande sui tag