2013-12-18 26 views
6

Khi truy vấn chỉ mục tìm kiếm trong phiên bản Python của GAE Search API, phương pháp hay nhất để tìm kiếm các tài liệu có từ phù hợp với tiêu đề được trả về lần đầu tiên, và sau đó là tài liệu có từ nào khớp với nội dung?API tìm kiếm của Google App Engine

Ví dụ đưa ra:

body = """This is the body of the document, 
with a set of words""" 

my_document = search.Document(
    fields=[ 
    search.TextField(name='title', value='A Set Of Words'), 
    search.TextField(name='body', value=body), 
    ]) 

Nếu có thể, làm thế nào người ta có thể thực hiện tìm kiếm trên một chỉ số của Document s của mẫu ở trên với kết quả trả về trong ưu tiên này, nơi mà các cụm từ được tìm kiếm là trong biến số qs:

  1. Tài liệu có title khớp với số qs; sau đó
  2. Tài liệu có nội dung khớp với các từ qs.

Có vẻ như giải pháp đúng là sử dụng MatchScorer, nhưng tôi có thể không được đánh dấu trên điều này vì trước đây tôi chưa sử dụng chức năng tìm kiếm này. Nó không rõ ràng từ tài liệu hướng dẫn cách sử dụng MatchScorer, nhưng tôi giả định một lớp con và quá tải một số chức năng - nhưng vì đây không phải là tài liệu và tôi chưa được đưa vào mã, tôi không thể nói chắc chắn.

Có điều gì đó ở đây mà tôi bị thiếu hoặc đây có phải là chiến lược chính xác không? Tôi đã bỏ lỡ nơi mà tài liệu này được ghi lại?


Chỉ cần cho rõ ràng đây là một ví dụ phức tạp hơn trong những kết quả mong muốn:

documents = [ 
    dict(title="Alpha", body="A"),   # "Alpha" 
    dict(title="Beta", body="B Two"),  # "Beta" 
    dict(title="Alpha Two", body="A"),  # "Alpha2" 
] 

for doc in documents: 
    search.Document(
    fields=[ 
     search.TextField(name="title", value=doc.title), 
     search.TextField(name="body", value=doc.body), 
    ] 
) 
    index.put(doc) # for some search.Index 

# Then when we search, we search the Title and Body. 
index.search("Alpha") 
# returns [Alpha, Alpha2] 

# Results where the search is found in the Title are given higher weight. 
index.search("Two") 
# returns [Alpha2, Beta] -- note Alpha2 has 'Two' in the title. 

Trả lời

3

Tuỳ chỉnh điểm là một trong những yêu cầu tính năng ưu tiên hàng đầu của chúng tôi. Chúng tôi hy vọng sẽ có một cách tốt để làm việc này càng sớm càng tốt. Trong trường hợp cụ thể của bạn, tất nhiên bạn có thể đạt được kết quả mong muốn bằng cách thực hiện hai truy vấn riêng biệt: truy vấn đầu tiên có giới hạn trường trên "tiêu đề" và giới hạn thứ hai về "nội dung".

+0

Cảm ơn Alan. Tôi nghĩ về truy vấn đôi như bạn đề nghị, nhưng sau đó người ta phải giao nhau kết quả (để không nhận được bản sao) và theo dõi các con trỏ được một chút tricker. Tôi đã hy vọng tôi đã nhìn thấy một cái gì đó đơn giản. Tôi sẽ đưa ra câu trả lời này là chính xác cho đến khi một cách tốt để làm điều này được sắp xếp ra ngoài. Chúc mừng –

+0

@Alan - Mọi thông tin cập nhật về điều đó? –

+1

@Alan - bump, bất kỳ tin tức nào về điều này? –

Các vấn đề liên quan