2013-04-01 6 views
5

Nella mia applicazione, mi piacerebbe che l'API di ricerca valutasse una corrispondenza nel campo name, superiore a una corrispondenza negli altri campi. Un utente può anche compilare un messaggio "about", che ha molto più testo, quindi potrebbe essere più probabile che una corrispondenza avvenga lì. C'è un modo per fare questo?C'è un modo per dare peso a determinati campi di un documento nella ricerca full text del motore di app?

+0

Puoi descrivere il problema che stai cercando di risolvere? In realtà non sono chiaro sullo scenario in cui ciò sarebbe utile. – markovuksanovic

+0

Supponiamo di avere un sito web di e-commerce e di offrire la ricerca di prodotti. Ogni prodotto può avere un titolo, una descrizione e un campo "Cosa c'è nella scatola". Voglio che le persone siano in grado di trasferire i dati per "adattatore di alimentazione", in modo che gli adattatori di alimentazione siano più in alto dei prodotti che indicano che nella scatola è presente un alimentatore. – bigblind

risposta

3

SortExpression (https://developers.google.com/appengine/docs/python/search/sortexpressionclass) fornisce un modo per impostare l'ordinamento in base a un'espressione particolare, ma offre solo un punteggio saggio del documento (vale a dire non per campo).

Un altro (probabilmente cattiva idea) è a solo cercare attraverso il campo del nome, utilizzando una stringa di query del tipo "Nome: my_search_term_here"

Quindi, dal mio conoscenze Search API di Google App Engine offre alcun modo per polarizzare un campo durante ricerca (cioè simile all'operatore^in ApacheSolr Lucene).

0

Non sono a conoscenza di questa funzionalità in Google AppEngine. Detto questo, potresti dividere questo problema in due passaggi. Prima cerca un termine nel campo nome, che ti darebbe un elenco di documenti, chiamalo lista1. Quindi cerca lo stesso termine in campi meno importanti. Questo ti darebbe un altro elenco, chiamalo lista2. È quindi possibile combinare questi due elenchi nel modo desiderato: creare una nuova lista3 che è una concatenazione di list1 e list2 e tutti gli elementi di list1 sono prima degli elementi di list2. Spero che questo ti aiuti.

Problemi correlati