Chcę kwerendy zwraca wynik, który zostanie obliczony jak:Jak obliczyć wynik na podstawie liczby haseł w zapytaniu elastycznym?
wystąpienia każdego terminu zapytania w tytule + Opis/liczby terminów użytych w zapytaniu
np
EbSearch.add [
new_job(id: 1, title: "Java Programmierer",
description: "Java Programmierer")
]
res = EbSearch.search("Java Programmierer").results.first.score.should == 4
W tej chwili wyjścia 8, ponieważ wykonuje zapytanie dla każdego terminu i podsumowuje je. Mogę po prostu podzielić się później, ale nie mam analizowanych terminów zapytań, więc związki mogłyby zepsuć wynik.
Zapytanie jest skonstruowane jak poniżej:
search = Tire.search index_name do
query do
dis_max do
query { string query, fields: ['title^3', 'description.with_synonyms^0.5'], use_dis_max: false, default_operator: "OR" }
query { string query, fields: ['title^3', 'description.without_synonyms'], use_dis_max: false, default_operator: "OR"}
end
end
end
Jakiś pomysł jak mogę rozwiązać ten problem jest bardzo mile widziane.
EDIT
zdałem sobie sprawę, że nie tyle pod warunkiem kontekst.
Oto kilka innych fragmentów, które już opracowałem. Napisałem niestandardowy podobieństwoProvider, aby wyłączyć idf i normalizację. https://gist.github.com/outsmartin/6114175
Cały kod opony znajduje się tutaj https://gist.github.com/6114186. Jest to nieco bardziej skomplikowane niż przykład, ale powinno być zrozumiałe.
Przez związki masz na myśli, że wyszukiwana fraza "elastyczne wyszukiwanie" może zostać zmyślona na 2 żetony? Czy chcesz podzielić to przez 2? – ramseykhalaf
Na przykład, ale ponieważ mam dużo niemieckich terminów, muszę podzielić "Javaprogrammierer" na Java i Programmierer. Ponieważ kwerenda jest wykonywana przy użyciu wszystkich haseł, chcę, aby wynik był w przykładzie od 0 do 4. – outsmartin
Nadal jestem trochę zdezorientowany ... Z powyższego opisu zrozumiałem, że wyszukiwanie "Java Programmierer" powinno mieć wynik: (4: wystąpienie każdego terminu zapytania w tytule + opis)/(2: liczba zapytań) = 2. Ale mówisz, że chcesz, aby wynik był 4. Jestem trochę zdezorientowany. – ramseykhalaf