首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django Haystack Solr自动完成数字不工作

Django Haystack Solr自动完成数字不工作
EN

Stack Overflow用户
提问于 2014-05-05 14:58:15
回答 1查看 261关注 0票数 0

我几乎可以使用使用Solr的Hay堆栈自动完成工作,但是当我试图匹配的标记只从一个数字开始时,它似乎就不能工作了。

我有这样的标签:

代码语言:javascript
复制
"8th Grade"
"9th Grade"
"10th Grade"

这是我的查询和堆定义:

代码语言:javascript
复制
tags = SearchQuerySet().models(Tag).filter(SQ(name_auto=autocomplete_string))

class TagIndex(indexes.SearchIndex, indexes.Indexable):
    name = indexes.CharField(model_attr='name', faceted=True)
    name_auto = indexes.EdgeNgramField(model_attr='name')
  • autocomplete_string = "10“起作用。
  • autocomplete_string = "th“起作用。
  • autocomplete_string =“8”不起作用。

这是我的Solr架构的一部分:

代码语言:javascript
复制
<fieldType name="edge_ngram" class="solr.TextField" positionIncrementGap="1">
    <analyzer type="index">
        <tokenizer class="solr.WhitespaceTokenizerFactory" />
        <filter class="solr.LowerCaseFilterFactory" />
        <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
        <filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="15" side="front" />
    </analyzer>
    <analyzer type="query">
        <tokenizer class="solr.WhitespaceTokenizerFactory" />
        <filter class="solr.LowerCaseFilterFactory" />
        <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
    </analyzer>
</fieldType>

看上去好像是在把“9年级”分成数字和单词。它只得到一个"9“长1,所以它不能执行查询。我想知道如何强制索引“9”作为一个原子词,而没有问题时,自动完成"9t“或调整设置,以使它工作。

出于某种原因,我不想把minGramSize降到1,但如果这是唯一的办法.

EN

回答 1

Stack Overflow用户

发布于 2014-05-05 15:49:17

请查看http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters#solr.WordDelimiterFilterFactory,您可能希望将splitOnNumerics设置为0

代码语言:javascript
复制
splitOnNumerics="1" causes alphabet => number transitions to generate a new part [Solr 1.3]:
    "j2se" => "j" "2" "se"
    default is true ("1"); set to 0 to turn off

(不是SOLR专家,我不能百分之百肯定这一点)

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

https://stackoverflow.com/questions/23475602

复制
相关文章

相似问题

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