使用Search API,是否可以进行IN查询?在哪里可以查询包含在字符串数组中的字符串参数的文档?
Search API没有IN
运算符,但可以使用OR
运算符进行模拟。例如,pattern IN [word1, word2, word3]
和pattern IN word_list
can写成:
index.search('word1 OR word2 OR word3')
并分别为:
index.search(' OR '.join(word_list))
是的,可以按内容查询文档。有几种可能性,你可以在Searching for documents by their contents找到这个例子:
def query_index():
index = search.Index('products')
query_string = 'product: piano OR price < 5000'
results = index.search(query_string)
for scored_document in results:
print(scored_document)
您还可以找到有关Query Class和its options的更多信息,以及更多关于how queries work的文档,例如:
最简单的查询(有时称为“全局搜索”)是仅包含字段值的字符串。此搜索使用一个字符串来搜索包含“rose”和“water”字样的文档:
def simple_search(index): index.search('rose water')
如果字符串数组太大,则使用带有字符串数组的类别数组可以选择稍微降低成本。可以排除某些类别,这有助于减少查询处理时间。例如:
categories=[['animal','dog','cat','fish'],['positive','good','fine','great'],['negative','horrible',disgusting','awful'],['water recreation', 'relax','holidays','spa','beach','sea']]
def query_index():
index = search.Index('products')
for categ in categories:
query_string = ' OR '.join(categ)
results = index.search(query_string)
if len(results)>0:
print(categ[0])
break
for scored_document in results:
print(scored_document)