2010-10-22 4 views
10

Questa domanda è stato chiesto prima:Come implementare la ricerca full-text in cinese su PostgreSQL?

Postgresql full text search in postgresql - japanese, chinese, arabic

ma non ci sono risposte per il cinese, per quanto posso vedere. Ho dato un'occhiata al wiki di OpenOffice e non ha un dizionario per il cinese.

Modifica: Poiché stiamo già utilizzando con successo il motore FTS interno di PG per i documenti in inglese, non vogliamo passare a un motore di indicizzazione esterno. Fondamentalmente, quello che sto cercando è una configurazione FTS cinese, che include parser e dizionari per il cinese semplificato (mandarino).

+0

Come siamo stati in grado di trovare una soluzione per questo (anche con la taglia ho offerto) alla fine siamo trasferiti a SQL Server, che supporta in modo nativo FTS cinese. Fortunatamente la nostra applicazione è stata progettata per essere equamente agnostica nei distributori di database, quindi questo non è stato un grosso problema per noi. –

risposta

3

so che è una vecchia questione, ma c'è un'estensione Postgres per il cinese: https://github.com/amutu/zhparser/

+0

Sto ottenendo che la query di ricerca testo contenga solo parole di arresto o non contenga problemi di lessemi, ignorati. Vedi https://stackoverflow.com/questions/41659909/fts-non-latin-text-search-query-taintain-only-stop-words-or-doesnt-contain-lex – Growler

2

Indicizza i tuoi dati con Solr, è un server di ricerca aziendale open source basato su Lucene.

È possibile trovare maggiori informazioni Solr qui:

http://lucene.apache.org/solr/

Un buon libro su come-a (con PDF scaricabile immediatamente) qui:

https://www.packtpub.com/solr-1-4-enterprise-search-server/book

Ed essere sicuri di utilizzare un tokenizzatore cinese, come solr.ChineseTokenizerFactory perché il cinese non è delimitato da spazi vuoti.

+0

Abbiamo bisogno di usare il motore FTS integrato in Postgres. Abbiamo già implementato con successo l'FTS inglese e vogliamo continuare a utilizzare lo stesso sistema per i documenti cinesi. –

+1

Oh, capisco. Bene, allora la mia risposta non ti è d'aiuto. Vedo il tuo chiarimento/modifica sulla domanda dal tuo post originale. Non sono sicuro di quale sarà la tua tempistica, ma le soluzioni Solr sono open source. Potresti * essere in grado di prendere a prestito da ChineseTokenizerFactory - la sua logica supera il problema intrinseco come ho capito, che la lingua non è delimitata da spazi bianchi. Buona fortuna a te. –

3

Ho appena implementato una soluzione FTS cinese in PostgreSQL. L'ho fatto creando token NGRAM dall'input cinese e creando il necessario tsvector s utilizzando una funzione incorporata (nel mio caso ho usato plpythonu). Funziona molto bene (massivamente preferibile al passaggio a SQL Server !!!).

+3

Puoi condividere il tuo codice per favore? – Evgeny

+0

sì, per favore! –