Pergunta

I can add docs to the index and search the index but how can I filter by language? For instance only docs in English?

    doc = search.Document(doc_id=str(article.key()), fields=[
        search.TextField(name='title', value=article.title),
        search.TextField(name='text', value=article.text),
        search.TextField(name='city', value=article.city),
        search.TextField(name='region', value=article.region),
        search.NumberField(name='cityID',
                           value=cityID),
        search.NumberField(name='regionID',
                           value=regionID),
        search.NumberField(name='category',
                           value=int(article.category)),
        search.NumberField(name='constant', value=1),
        search.TextField(name='articleID', value=str(article.key().id())),
        search.TextField(name='name', value=article.name),
        search.DateField(name='date',
                         value=datetime.now().date()),
        search.NumberField(name='price', value=price),
        search.NumberField(name='mileage', value=mileage),
        search.NumberField(name='regdate', value=regdate),
        search.TextField(name='type', value=article.type),
        search.TextField(name='currency', value=article.currency),
        search.NumberField(name='company_article',
                           value=company_article),
        search.NumberField(name='hour',
                           value=datetime.now().hour),
        search.NumberField(name='minute',
                           value=datetime.now().minute),
        search.NumberField(name='hasimages',
                           value=hasimages),
        search.TextField(name='url', value=article.url),
        search.TextField(name='serving_url', value=serving_url),
        ], language=language)
    search.Index(name='myIndex').put(doc)

I make a search with the code:

date_desc = search.SortExpression(expression='date',
                                  direction=search.SortExpression.DESCENDING,
                                  default_value=datetime(1999, 01, 01))

hr_desc = search.SortExpression(expression='hour',
                                direction=search.SortExpression.DESCENDING,
                                default_value=1)

min_desc = search.SortExpression(expression='minute',
                                 direction=search.SortExpression.DESCENDING,
                                 default_value=1)

# Sort up to  matching results by subject in descending order
sort = search.SortOptions(expressions=[date_desc, hr_desc,
                                       min_desc], limit=ACCURACY)

# Set query options
options = search.QueryOptions(limit=doc_limit, cursor=cursor,
                              sort_options=sort,
                              number_found_accuracy=10000,
)
query = search.Query(query_string=query_string, options=options)
index = search.Index(name=_INDEX_NAME)
# Execute the query
return index.search(query)

But how do I search for docs only in English?

Foi útil?

Solução

Add an atom field to each document, containing the value of the language code; then search on the value of that atom field.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top