我想为自己的标记功能添加自动填充功能。
几个问题:
如何生成包含字符串前缀和中间匹配的自动填充建议列表?例如,如果用户键入“auto”,则自动填充建议应包含“自动填充”和“构建自动化”等字词。
我想允许使用多字标签,并使用逗号(“,”)作为标签的分隔符。因此,当使用点击空格键时,他仍然键入相同的标签,但当他按下逗号键时,他正在开始一个新标签。我该怎么做?
我正在使用Django,jQuery,MySQL和Solr。实现上述2个功能的最佳方法是什么?
答案 0 :(得分:2)
答案 1 :(得分:2)
我已经完全按照您的要求实施了它,并且效果非常好。有两个问题需要注意:
与上一个答案一样,我从上面链接的同一篇文章开始,但你想要Edge NGram分析器。你要添加的东西也是做空格标记化。
然后您将对schema.xml文件进行这些更改。这个例子假设你已经定义了一个名为“title”的字段,它也是你想要显示的字段。我创建了第二个字段,它仅用于自动完成前缀匹配。
步骤1:定义边缘NGram文本字段类型
<types>
<!-- ... other types ... -->
<!-- Assuming you already have this -->
<fieldType name="text" class="solr.TextField" positionIncrementGap="100">
... normal text definition ...
</fieldType>
<!-- Adding this -->
<fieldType name="prefix_edge_text" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<!-- not using enablePositionIncrements="true" for now -->
<filter class="solr.StopFilterFactory" words="stopwords.txt" />
<filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="25" />
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<!-- No need to create Edges here -->
<!-- Don't want stopwords here -->
</analyzer>
</fieldType>
</types>
第2步:定义新字段
<fields>
<!-- ... other fields ... -->
<!-- Assuming you already have this -->
<field name="title" type="text" indexed="true" stored="true" multiValued="true"/>
<!-- Adding this -->
<field name="prefix_title" type="prefix_edge_text" indexed="true" stored="true" multiValued="true" />
</fields>
步骤3:在索引编制期间将标题内容复制到前缀字段
<!-- Adding this -->
<copyField source="title" dest="prefix_title" />
这几乎就是架构。记住: