English 中文(简体)
Django Haystack, 如何匹配部分词词?
原标题:Django haystack, how to match parts of words?

我在Django 1.4(Python为2.7)使用干草堆 1.2.7+2.4.0

示例:搜索查询“sear”应匹配含有“sear”和“sear”和“sear”和“sear”(etc)的项目。

我的设置 :

HAYSTACK_SITECONF =  verticalsoftware.search.search_sites 
HAYSTACK_SEARCH_ENGINE =  whoosh 
HAYSTACK_WHOOSH_PATH =  C:/whoosh/prodeo_index 
HAYSTACK_INCLUDE_SPELLING = True

搜索索引 :

class GalleryIndex(SearchIndex):
    text = indexes.CharField(document=True, use_template=True)
    content_auto = indexes.NgramField(model_attr= title ) 
    def index_queryset(self):
        """Used when the entire index for model is updated."""
        return Gallery.objects.filter(date_added__lte=datetime.datetime.now())

与EdgeNgram Field和(或) RealTimeSearchIndex一起尝试过

urlCONF:

from django.conf.urls.defaults import *
from verticalsoftware.search.views import SearchWithRequest

urlpatterns = patterns( haystack.views ,
    url(r ^$ , SearchWithRequest(), name= haystack_search ), 
)

自定义视图 :

from haystack.views import SearchView
import operator
from haystack.query import SearchQuerySet, SQ

class SearchWithRequest(SearchView):

    __name__ =  SearchWithRequest 

    def build_form(self, form_kwargs=None):
        if form_kwargs is None:
            form_kwargs = {}

        if self.searchqueryset is None:
            sqs = SearchQuerySet().filter(reduce(operator.__or__, [SQ(text=word.strip()) for word in self.request.GET.get("q").split(   )]))
            form_kwargs[ searchqueryset ] = sqs

        return super(SearchWithRequest, self).build_form(form_kwargs)

对于 qs 我尝试了所有可以想象到的事物, 使用过滤器和自动完成, 正如在文件及我能找到的每个相关论坛文章中所看到的那样; 使用 __ 启动和 __ 封并结合我的内容_ 自动或文本字段 根本无济于事( 后者根本不匹配任何内容; 而前者只匹配一个字符或完整字符串 )

上面粘贴的变量至少具有返回与空格字符串连接结果的好处(每个字仍然必须完全匹配相应的数据库条目,因此需要这个员额)

任何援助,都确是感谢的,

问题回答

晚至的一方, 但建议将您的主文档字段( 文本) 更改为 < code> EdgeNgram Field 或 < code> Ngram Field , 否则搜索索引无法匹配单词碎片, 只有完整的单词匹配才可能与 < code> Char Field 匹配 。

玩爵士贝壳有时有用,

./manage.py shell
from haystack.query import SearchQuerySet
s = SearchQuerySet()
s.auto_query( sear )
s.auto_query( sear ).count()
...





相关问题
Filter Django Haystack results like QuerySet?

Is it possible to combine a Django Haystack search with "built-in" QuerySet filter operations, specifically filtering with Q() instances and lookup types not supported by SearchQuerySet? In either ...

Django Haystack exact filtering

I have a haystack search which has the following SearchIndex: class GrantIndex(indexes.SearchIndex): """ This provides the search index for the Grant application. """ text = indexes....

Apache solr search part of the word

I m using apache solr search engine for indexing my website database.. I m using django+http://haystacksearch.org/ So let s say I have document that have word "Chicken" When I search for "chicken" -...

Django-haystack使用属性过滤结果?

难道有人能举一个例子,说明如何利用属性,对全文检索结果进行过滤? 我在自己的网站上上过了该片,但对于如何使用沙斯特语仍持肯定态度。

热门标签