Python版のGAE Search APIで検索インデックスを照会するときに、単語がタイトルに一致するドキュメントが最初に返されたアイテムを検索するベストプラクティスは何ですか?所与例えばGoogle App Engine Search API
:
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),
])
ことが可能である場合、どのように一つのフレーズがあるため、検索され、この優先度に返された結果と上記フォームのDocument
Sのインデックスに検索を実行するかもしれません変数qs
に:そのtitle
- ドキュメント
qs
一致しました。 - 本文が
qs
個の単語に一致する文書。
正しい解決策がMatchScorer
を使用するように思われますが、この検索機能を使用していないため、私はこのマークを外している可能性があります。この文書では、MatchScorer
の使い方ははっきりしていませんが、サブクラスと関数のオーバーロードを想定していますが、これは文書化されていないため、コードを掘り下げたわけではありません。
ここに欠けているものがあるのですか、これが正しい戦略ですか?このようなことが文書化されているところで私は逃しましたか?
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.
ありがとうございました。私はあなたが示唆しているように二重クエリについて考えましたが、結果を交差させて(重複を取得しないように)、カーソルを追跡することはちょっと面倒です。私は単純なものを見逃していたことを期待していました。これを行う良い方法が整理されるまで、私はこの答えを正しいものとします。乾杯。 –
@Alan - それに関する更新はありますか? –
@Alan - バンプ、これに関するニュース? –