Django Haystack Whoosh后端和部分搜索



我正在使用django haystack 1.27。我可以搜索。太好了。但是我如何搜索部分单词呢?

例如:

搜索:OREM, OR, EM

词:LOREM

结果:LOREM

search_indexes.py

class NewsIndex(SearchIndex):
    text = CharField(document=True, use_template=True)
    date = DateTimeField(model_attr='creation_date')
    def get_model(self):
        return News
    def index_queryset(self):
        return self.get_model().objects.get_published_models(TOWN, News)
site.register(News, NewsIndex)

views.py

def search(request):
    order = self.request.GET.get("order", None)
    sqs = SearchQuerySet()
    if order:
        ...
        sqs = sqs.order_by(order + "date")
    search_template = SearchView(template='general/search.html',
                                 searchqueryset=sqs)(request)

排序并不难。

我认为搜索索引引擎包括部分搜索:/。Whoosh支持这个功能吗?我已经测试了:自动完成功能,但没有"EM"的结果,只是"LOR"。

尝试使用NgramField代替CharField

生成所有可能被索引的Ngrams
使用NgramField的缺点是索引文件变得非常大。
我的文件大小为2MB,可容纳24条记录。

你可能想用EdgeNgramField代替。它排除了许多可能性。

例如:

Data: 'documentation'

使用NgramField

:
查询:' document '结果:'documentation'

使用EdgeNgramField

:
查询:' document '结果:无

最新更新