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'
> <mailto:
shaw...@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...@googlegroups.com
>> <mailto:
django-users...@googlegroups.com>.
>> <mailto:
django...@googlegroups.com>.
>> <
https://groups.google.com/d/msgid/django-users/793b8999-cac4-4c2d-94cc-eabb80f4e702%40googlegroups.com?utm_medium=email&utm_source=footer>.
> --
> 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...@googlegroups.com
> <mailto:
django-users...@googlegroups.com>.
> <mailto:
django...@googlegroups.com>.
>
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>.
--
--
Anthony Flury
email : *
Anthon...@btinternet.com*
Twitter : *@TonyFlury <
https://twitter.com/TonyFlury/>*