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):
-
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
-
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:
-
Ciò incide i tuoi utenti con la costruzione dell'indice, che può danneggiare l'affidabilità, ecc.
-
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.