Como posso converter uma consulta de pesquisa Google para algo que pode alimentar to_tsquery do PostgreSQL ()?
Se não há nenhuma biblioteca existente lá fora, como eu devo ir sobre como analisar uma consulta de pesquisa Google em uma linguagem como PHP?
Por exemplo, eu gostaria de tomar a seguinte consulta de pesquisa Google-ish:
(used cars OR new cars) -ford -mistubishi
E transformá-lo em um to_tsquery () - seqüência friendly:
('used cars' | 'new cars') & !ford & !mistubishi
Eu posso falsificar isso com expressões regulares, mas isso é o melhor que posso fazer. Existe algum método de análise lexical robusta de ir sobre isso? Eu gostaria de ser capaz de suportar operadores de pesquisa extensos demais (como o site do Google: e intitle :) que será aplicado a diferentes campos de banco de dados e, portanto, teriam de ser separados da cadeia de tsquery.
UPDATE: Eu percebo que com operadores especiais isso se torna um Google para SQL conversão cláusula WHERE, em vez de um Google para tsquery conversão. Mas a cláusula WHERE pode conter um ou mais tsqueries.
Por exemplo, a consulta de estilo Google:
((color:blue OR 4x4) OR style:coupe) -color:red used
Deve produzir um SQL cláusula WHERE como este:
WHERE to_tsvector(description) MATCH to_tsquery('used')
AND color <> 'red'
AND ( (color = 'blue' OR to_tsvector(description) MATCH to_tsquery('4x4') )
OR style = 'coupe'
);
Eu não tenho certeza se o acima é possível com regex?













