Please do not top-post.

​On Thu, Jun 16, 2016 at 2:38 PM, David G. Johnston <
david.g.johns...@gmail.com> wrote:

> On Thu, Jun 16, 2016 at 2:21 PM, Liza Sazonova <l...@getpitstop.io> wrote:
>
>> Hello,
>>
>> I'm trying to implement a keyword-based search on my database.
>>
>> I have some text input (Say, "The A or B and C with D") and a list of
>> keywords ("B","X","Y"). I want to identify which keywords are present in
>> the text input. I also want to use a thesaurus to process the text input,
>> since the keywords have synonyms (for example, "The A : X").
>>
>> As far as I understand, the only way for me to process text input with a
>> thesaurus would be to use tsvector / tsquery; or at least this is the
>> fastest way.
>> Is it possible to retrieve the tsvector from the text input, then
>> retrieve the tsvector from the keyword list, and identify which words are
>> present in both?
>>
>>
> From its description the tsvector_to_array function sounds like it would
> be helpful here.
>
> ​
> https://www.postgresql.org/docs/9.6/static/functions-textsearch.html#TEXTSEARCH-FUNCTIONS-TABLE
> ​
>
> ​tsvector_to_array(input) -> unnest
> intersect
> tsvector_to_array(keywords) -> unnest
>
> ​David J.​
>
>
On Thu, Jun 16, 2016 at 2:51 PM, Liza Sazonova <l...@getpitstop.io> wrote:

> Thank you!
>
> It seems like this function's not available in PostgreSQL 9.5 that I'm
> using
> I'm getting: "ERROR:  function ​tsvector_to_array(unknown) does not exist".
>
> Do you know of any equivalent function in earlier releases?
>
> I was thinking of casting ts_vector into text, and then splitting the text
> using a delimiter; but this seems like a slow solution and I was wondering
> if there's anything better.
> ​
>

Not that I can see nor would expect given someone to the time to write it
for 9.6 (sorry, about not pointing that out - blindly suggesting solutions
only available in beta is not something I usually do)​.

Your best bet I'd say is using "strip(tsvector)" to clean the inputs, then
use "string_to_array(...)" to get your array and then unnest/intersect

https://www.postgresql.org/docs/current/static/functions-array.html

There may be other solutions available in 3rd-party extensions or that I'm
just missing but just using standard 9.5 stuff that's what I see.

​I'd solve your problem using a custom function and if you indeed feel it
is too slow then explore alternatives.

David J.

Reply via email to