2013-04-01 15 views
5

W mojej aplikacji chciałbym, aby w wynikach wyszukiwania były porównywane wartości w polu name, wyższe niż dopasowanie w innych polach. Użytkownik może również wypełnić wiadomość "około", która ma znacznie więcej tekstu, więc może być bardziej prawdopodobne, że mecz się tam pojawi. Czy jest jakiś sposób to zrobić?Czy istnieje sposób nadania niektórym polom dokumentów wagi w wyszukiwaniu pełnotekstowym silnika aplikacji?

+0

Czy możesz opisać problem, który próbujesz rozwiązać? W rzeczywistości nie mam jasności co do scenariusza, w którym byłoby to użyteczne. – markovuksanovic

+0

Załóżmy, że masz witrynę e-commerce i oferujesz wyszukiwanie produktów. Każdy produkt może mieć tytuł, opis i pole "co jest w pudełku". Chcę, aby ludzie mogli wybrać dane dla "zasilacza", aby adaptery zasilania miały wyższą pozycję niż produkty, które wskazują, że w pudełku jest zasilacz. – bigblind

Odpowiedz

3

SortExpression (https://developers.google.com/appengine/docs/python/search/sortexpressionclass) zapewnia sposób ustawiania sortowania na podstawie określonego wyrażenia, ale oferuje tylko wynik zgodny z dokumentami (tj. Nie na pole).

Innym (prawdopodobnie zły pomysł) jest wyszukiwanie tylko z nazwy pola, za pomocą łańcucha zapytania jak „imię: my_search_term_here”

Więc z mojej wiedzy Search API Google App Engine nie oferuje drogę do stronniczości jednego pola w czasie search (tj. podobny do operatora^w ApacheSolr Lucene).

0

Nie jestem świadomy tej funkcji w Google AppEngine. Powiedziawszy to, możesz podzielić ten problem na dwa etapy. Najpierw wyszukaj termin w polu nazwy, który dałby ci listę dokumentów, nazwij go list1. Następnie wyszukaj ten sam termin w mniej ważnych dziedzinach. To dałoby ci kolejną listę, nazwij ją list2. Następnie możesz łączyć te dwie listy w dowolny sposób - tzn. Utworzyć nową listę3, która jest połączeniem list1 i listy2, a wszystkie elementy z listy1 znajdują się przed elementami z listy2. Mam nadzieję że to pomoże.