Saturday, April 28, 2018

Re: Django--Making query use part of the matching name

What are the rules - you say that a query string of '10FTK' should match
'10FTH86RSK', but also '10FTK', '10F6TK', '10FTK4'

I think the problem is that the rules aren't 100% clear.

* For '10FTK' to match '10FTH....' you actually only care about the
first 4 characters ?
* For '10FTK' to match '10FTK...' implies you care about the first 5
* For '10FTK' to match '10F6TK...' implies you care about your 5
characters with an option numeric inserted after char 3 ?

so - should it match '106FTK ...' or '10TFK' or '10F99TK'

I can suggest a few strategies :

* With English spelling it is not common for a knowledgable to get the
first letter wrong - so you could find that the user will know they
want '10...' and that the 'FTK' bit might be mis-remembered - so
search on the first two characters only.
* Use the entered code to build a more fuzzy search - so 10FTK becomes
something like r'10*F.*T.*(K|H)' (for instance starting with the
characters '10' and looking for FTK or FTH with possible intervening
options.
* Typically long code words are difficult to remember - - is it
possible that '10FTH86RSK' actually represents a concept that can be
categorized and described in English - for instance rather than try
to implement a fuzzy search for the code, you actually provide a
user friendly categorization drill down; so the user works down a
tree of specific natural language descriptions - which internally
builds the code '10FTH86RSK'

> On Apr 25, 2018, at 5:13 PM, shawnmhy@gmail.com
> <mailto:shawnmhy@gmail.com> wrote:
>
>> Hello everyone!
>>
>> Currently I am working on Django.
>>
>> I defined a 'Search' function in views.py:
>>
>> def search(request):
>> q = request.GET.get("q")
>> if q:
>> ReactResul = Reactionsmeta.objects.filter(id__contains=q)
>> MetaResul = Metabolites.objects.filter(id__contains=q)
>> GeneResul = Genes.objects.filter(id__contains=q)
>>
>> else:
>> # you may want to return Customer.objects.none() instead ReactResul= Reactionsmeta.objects.all()
>> GeneResul = Genes.objects.all()
>> MetaResul = Metabolites.objects.all()
>> context =dict(result_1=MetaResul, q=q, result_2=ReactResul, result_3 = GeneResul)
>> return render(request, "Recon/search.html", context)
>>
>> And now I want to make it more powerful.
>>
>> If I want to search '10FTH86RSK' but I cannot remember the whole
>> name, I can just use part of the string to make query. For example,
>> if I type '10FTK', '10FTH86RSK' should be returned as result.
>> In that case, '10FTK', '10F6TK' or '10FTK4' should also be returned
>> as results.
>>
>> So how could I achieve this function?
>> --
>> You received this message because you are subscribed to the Google
>> Groups "Django users" group.
>> To unsubscribe from this group and stop receiving emails from it,
>> send an email to django-users+unsubscribe@googlegroups.com
>> <mailto:django-users+unsubscribe@googlegroups.com>.
>> To post to this group, send email to django-users@googlegroups.com
>> <mailto:django-users@googlegroups.com>.
>> Visit this group at https://groups.google.com/group/django-users.
>> To view this discussion on the web visit
>> https://groups.google.com/d/msgid/django-users/793b8999-cac4-4c2d-94cc-eabb80f4e702%40googlegroups.com
>> <https://groups.google.com/d/msgid/django-users/793b8999-cac4-4c2d-94cc-eabb80f4e702%40googlegroups.com?utm_medium=email&utm_source=footer>.
>> For more options, visit https://groups.google.com/d/optout.
> --
> You received this message because you are subscribed to the Google
> Groups "Django users" group.
> To unsubscribe from this group and stop receiving emails from it, send
> an email to django-users+unsubscribe@googlegroups.com
> <mailto:django-users+unsubscribe@googlegroups.com>.
> To post to this group, send email to django-users@googlegroups.com
> <mailto:django-users@googlegroups.com>.
> Visit this group at https://groups.google.com/group/django-users.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/django-users/9EC3A76F-EE60-47DC-B4DD-9092D8321EC1%40gmail.com
> <https://groups.google.com/d/msgid/django-users/9EC3A76F-EE60-47DC-B4DD-9092D8321EC1%40gmail.com?utm_medium=email&utm_source=footer>.
> For more options, visit https://groups.google.com/d/optout.


--
--
Anthony Flury
email : *Anthony.flury@btinternet.com*
Twitter : *@TonyFlury <https://twitter.com/TonyFlury/>*

--
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscribe@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/4e24ffcd-a098-14f7-db47-d235fdb65002%40btinternet.com.
For more options, visit https://groups.google.com/d/optout.

No comments:

Post a Comment