Как улучшить поиск?

Я только что получил стог сена с установленным solr и создал собственное представление:

from haystack.query import SearchQuerySet
def post_search(request, template_name='search/search.html'):
    getdata = request.GET.copy()
    try:
        results = SearchQuerySet().filter(title=getdata['search'])[:10]
    except:
        results = None
    return render_to_response(template_name, locals(), context_instance=RequestContext(request))

Это представление возвращает только точные совпадения в поле заголовка. Как мне сделать хотя бы такие вещи, как sql LIKE '%string%' (или, по крайней мере, я так думаю), где, если я ищу 'i' или 'IN' или 'index', я получу результат 'index'?

Кроме того, большинство способов поиска редактируются с помощью стога сена или solr?

Какие другие передовые практики/улучшения поиска вы предлагаете (пожалуйста, также укажите реализацию)?

Большое спасибо заранее!


person Derek    schedule 24.07.2011    source источник


Ответы (1)


Когда вы используете Haystack/Solr, идея состоит в том, что вы должны сообщить Haystack/Solr, что вы хотите проиндексировать для конкретного объекта. Итак, скажем, вы хотите построить поиск по мере набора индекса для базового словаря. Если вы хотите, чтобы он просто соответствовал префиксам, для слова Boston вам нужно указать ему индексировать B, Bo, Bos и т. д., а затем вы должны выполнить запрос для любого текущего поискового выражения, и вы могли бы вернуться результаты. Если вы хотите найти любую часть слова, вам нужно построить суффиксные деревья, а затем Solr позаботится об их индексации.

Посмотрите шаблоны в Haystack для получения дополнительной информации. http://docs.haystacksearch.org/dev/best_practices.html#well-constructed-templates

Вопрос, который вы задаете, довольно общий, он может помочь уточнить, что ищут люди. Тогда будет проще подсказать, как индексировать данные. Удачи.

person Bialecki    schedule 24.07.2011