2013 または 1434h のキーワードで検索するにはどうすればよいですか?
置き換えたいようです:
to_tsquery('1434h') q
と:
to_tsquery('1434h | 2013') q
http://www.postgresql.org/docs/current/static/functions-textsearch.html
補足:to_tsquery()
構文は非常に気まぐれです。空想は許されませんし、Postgres の仮定の多くはエンドユーザーにとって使いやすいものではありません。
plainto_tsquery()
多くの場合、任意の量のガベージを投げることができるを使用した方がよいでしょう。したがって、クエリを発行する前に文字列を前処理することを検討してください。たとえば、文字列とOR
元の部分を一緒に分割できます。
where sc.text_index @@ (plainto_tsquery('1434h') || plainto_tsquery('2013'))
そうすることで、コードが少し複雑になりますが'quick & brown & fox & jumps & lazy & dog'
、プレーンな の代わりに入力する必要があることを (Google で慣れ親しんでいることに反して) ユーザーが理解する必要はありません'The quick brown fox jumps over the lazy dog'
。
編集:実際にサンプルクエリを試してみましたが、実際にパーサーの問題が発生しているようです:
# SELECT alias, description, token FROM ts_debug('Astronomic Event 2013/1434H - Aceh');
alias | description | token
-----------+-------------------+------------
asciiword | Word, all ASCII | Astronomic
blank | Space symbols |
asciiword | Word, all ASCII | Event
blank | Space symbols |
file | File or path name | 2013/1434H
blank | Space symbols |
blank | Space symbols | -
asciiword | Word, all ASCII | Aceh
(8 rows)
http://www.postgresql.org/docs/current/static/textsearch-parsers.html
アプリ固有のパーサーを作成 (または検索) して構成する必要があるようです。個人的にこれを行ったことがないので、私ができる最善のことは、Postgres がこれを許可し、サンプルが含まれていることを強調することです。
http://www.postgresql.org/docs/current/static/test-parser.html
または、tsvector に変換する前に、tsvector 関連のトリガーを変更して、たとえば\d{4}/\d+[a-zA-Z]
最も適切と思われるものに一致させ、それに応じてスペースを追加します。ファイル名を保存する必要がない場合は、次のような単純な方法でうまくいく可能性があります。
SELECT alias, description, token
FROM ts_debug(replace('Astronomic Event 2013/1434H - Aceh', '/', ' / '));