首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Haystack Django Elasticsearch拼写

Haystack Django Elasticsearch拼写
EN

Stack Overflow用户
提问于 2014-10-01 15:09:41
回答 2查看 397关注 0票数 0

我在建立干草堆/django/elasticsearch时有两个问题

  1. 我从来没有从索引字段中得到结果,例如indexes.CharField(model_attr='title')无法得到结果。只有在txt模板中加入{{ object.title }},我才能得到匹配标题的结果
  2. 如果我的标题是'foo‘,我永远不会得到'fo’的结果,而我的后端设置中的INCLUDE_SPELLING设置设置为True。

这些文档并没有说明这些情况有什么特别之处,我的设置是根据干草堆文档,我遗漏了什么?

我的索引:

代码语言:javascript
复制
class FooIndex(indexes.SearchIndex, indexes.Indexable):
    text = indexes.CharField(document=True, use_template=True)
    title = indexes.CharField(model_attr='title')  # never gets me results unless I add it to the template

    def get_model(self):
        return Foo

我的设置:

代码语言:javascript
复制
HAYSTACK_CONNECTIONS = {
    'default': {
        'ENGINE': 'haystack.backends.elasticsearch_backend.ElasticsearchSearchEngine',
        'URL': 'http://127.0.0.1:9200/',
        'INDEX_NAME': 'haystack',
        'INCLUDE_SPELLING': True,
    },
}
EN

回答 2

Stack Overflow用户

发布于 2014-10-02 03:09:18

1)如果use_template=True只索引您在template文件中所放的内容,那么将您想要索引的所有字段放在那里。2)添加INCLUDE_SPELLING后是否刷新索引?

票数 0
EN

Stack Overflow用户

发布于 2016-02-22 14:26:03

确保启用了拼写检查组件。

要做的第一件事是在SearchIndex类上创建一个特殊字段,该字段反映文本字段,但使用FacetCharField。这将禁用Solr所做的后处理,这可能会搞乱您的建议。建议如下:

代码语言:javascript
复制
class MySearchIndex(indexes.SearchIndex, indexes.Indexable):
    text = indexes.CharField(document=True, use_template=True)
    # ... normal fields then...
    suggestions = indexes.FacetCharField()

def prepare(self, obj):
    prepared_data = super(MySearchIndex, self).prepare(obj)
    prepared_data['suggestions'] = prepared_data['text']
    return prepared_data

一旦完成,spelling_suggestions方法应该返回适当的值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26144555

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档