使用Search API,可以进行IN查询吗?在哪里可以查询包含在字符串数组中的带有字符串参数的文档?
答案 0 :(得分:2)
Search API没有IN
运算符,但是可以使用OR
运算符来模拟。例如,pattern IN [word1, word2, word3]
和pattern IN word_list
可以写为:
index.search('word1 OR word2 OR word3')
和:
index.search(' OR '.join(word_list))
答案 1 :(得分:0)
是的,可以通过文档的内容查询文档。 有几种可能性,您可以在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')
如果字符串数组太大,则可以选择将category数组与字符串数组一起使用,以稍微降低成本。可以排除某些类别,这将有助于减少查询处理时间。例如:
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)