jpe*_*lli 8 postgresql full-text-search trigraphs
我想像google建议一样进行文本搜索.
因为神奇的Postgis,我正在使用PostgreSQL.
我正在考虑使用FTS,但我发现它无法搜索部分单词,所以我发现了这个问题,并看到了三元组的工作方式.
主要问题是我正在研究的搜索引擎是用于西班牙语.FTS在词干和词典(同义词,拼写错误),UTF等方面表现出色.Trigrams适用于部分单词,但它们只适用于ASCII,并且(显然)它们不使用字典之类的东西.
我在想是否有任何方式可以使用两者中最好的东西.
是否可以使全文搜索和Trigrams在PGSQL中一起工作?
您可以在 Postgres 中执行此操作,并且不需要 Lucene。
您可以引用tsquery或tsvector喜欢下面的短语。您可以:*在tsquery术语后添加一个进行前缀搜索:
select
'''new york city'''::tsvector @@ '''new yo'':*'::tsquery, --true
'''new york times'''::tsvector @@ '''new yo'':*'::tsquery, --true
'''new york'''::tsvector @@ '''new yo'':*'::tsquery, --true
'''new'''::tsvector @@ '''new yo'':*'::tsquery, --false
'new'::tsvector @@ '''new yo'':*'::tsquery, --false
'new york'::tsvector @@ '''new yo'':*'::tsquery --false
Run Code Online (Sandbox Code Playgroud)
主要问题是,to_tsvector()并且[plain]to_tsquery()会删除您的报价。您可以编写自己的版本,但不这样做(这并不难),或者在它们之后进行一些后处理以构建您的术语 n-gram。
上面额外的单引号只是转义。select $$ i heart 'new york city' $$::tsvector;是等价的。
| 归档时间: |
|
| 查看次数: |
2701 次 |
| 最近记录: |