在使用 Amazon RDS 进行全文搜索时,无法使用扩展程序“tsvector”,因此需要使用其他方法来实现全文搜索。一种解决方法是使用 Amazon CloudSearch 来实现全文搜索,另一种方法是将文本数据存储在 Amazon ElasticSearch 等其他支持“tsvector”扩展程序的数据库中。
示例代码:
使用 Amazon CloudSearch 实现全文搜索:
import boto3
cloudsearch = boto3.client('cloudsearch')
def search(query):
# 将查询语句发送到 Amazon CloudSearch 进行处理
response = cloudsearch.search(
query=query,
queryOptions={
'fields': ['text']
}
)
# 处理 Amazon CloudSearch 返回的结果
results = []
for hit in response['hits']['hit']:
result = {}
for field in hit['fields']:
result[field] = hit['fields'][field][0]
results.append(result)
return results
将文本数据存储在 Amazon ElasticSearch 中:
import boto3
from elasticsearch import Elasticsearch
es = Elasticsearch(
[
{'host': 'hostname', 'port': 443},
],
http_auth=('user', 'pass'),
use_ssl=True
)
def search(query):
# 使用 Elasticsearch 进行全文搜索
response = es.search(
index='my_index',
body={
'query': {
'match': {
'text': query
}
}
}
)
# 处理 Elasticsearch 返回的结果
results = []
for hit in response['hits']['hits']:
result = {}
for field in hit['_source']:
result[field] = hit['_source'][field]
results.append(result)
return results