2013-07-26 13 views
5

Abbiamo una query nativo per ricerca a testo integrale che utilizza un indice GIN in questo modo:come aggiungere @ to postgres hibernate dialect?

CREATE INDEX idx_column1 ON table1 USING gin (to_tsvector('english', column1)); 

SELECT * 
FROM table1 
where to_tsvector('english', column1) @@ to_tsquery('searchedText') 

Tuttavia, siamo stati in grado di replicare questa query in HQL, perché gli errori Hibernate il simbolo @. Come aggiungere il simbolo @ al dialetto di ibernazione?

+0

La gente Hibernate sembrano pensare che sia strano a voler fare questo ("Non portatile" , "usa solo Hibernate Search", ecc.) quindi è difficile trovare informazioni. –

+0

Spero che questo articolo ti possa aiutare - http://java-talks.blogspot.com/2014/04/use-postgresql-full-text-search-with-hql.html –

risposta

1

lo si può trovare in this link, che puntano vi guiderà a:

  • riconoscere che SQLFunctions devono restituire un valore e se usato in HQL deve essere in una forma di espressione (ad esempio, FTS (corpo , 'dog') = true - fts (body, 'dog') non funzionerà in HQL)
  • creare una funzione SQL Hibernate per PG FTS; e
  • ricordare che l'espressione "to_tsvector (corpo) @@ to_tsquery ('cane')" restituisce un valore booleano
Problemi correlati