Оценка, которую я вижу в моих результатах поиска, кажется мне неправильной, я не уверен, что мне нужно что-то сделать, чтобы улучшить точность оценки.
в приведенном ниже примере с использованием 'ches', Chester должен набрать высокий балл, но по каким-то причинам он набрал меньше, чем Chelmsford?
query = 'ches'
sqs = SearchQuerySet().filter(content=AutoQuery(query))
paginator = Paginator(sqs, 10)
page = request.GET.get('page')
try:
results = paginator.page(page)
except PageNotAnInteger:
results = paginator.page(1)
except EmptyPage:
results = paginator.page(paginator.num_pages)
>>> for i in results.object_list:
... i.score, i.text
...
(7.616099, 'STR-CHEL-RTR-02\n')
(7.5457063, 'STR-CHEL-NVR\n')
(7.290444, 'STR-CHES-NVR\n')
(6.81494, 'Chester\n65001\nCH1 ABC')
(6.6442084, 'STR-CHEL-RTR-01\n')
(6.493678, 'STR-CHES-RTR-02\n')
(6.357569, 'STR-CHES-SW-03\n')
(6.357569, 'STR-CHES-RTR-01\n')
(5.7965107, 'Chelmsford\n65002\nCM1 ABC')
индексы, если они актуальны
class DeviceIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.EdgeNgramField(document=True, use_template=True)
def get_model(self):
return Device
def index_queryset(self, using=None):
"""Used when the entire index for model is updated."""
return self.get_model().objects.all().select_related('site')
class SiteIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.EdgeNgramField(document=True, use_template=True)
def get_model(self):
return Site
def index_queryset(self, using=None):
"""Used when the entire index for model is updated."""
return self.get_model().objects.all()
и поиск текстов
device_text.txt
{{ object.hostname }}
site_text.txt
{{ object.location }}
{{ object.bgp_as}}
{{ object.postcode }}