Оценка Джанго Хейстек кажется неправильной - PullRequest
0 голосов
/ 03 октября 2019

Оценка, которую я вижу в моих результатах поиска, кажется мне неправильной, я не уверен, что мне нужно что-то сделать, чтобы улучшить точность оценки.

в приведенном ниже примере с использованием '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 }}
...