Solr - 如何索引条形码

时间:2013-08-08 11:52:05

标签: solr solr4

我有一个包含以下数据的documnet

car {
    id:     guid
    name:   string
    sku:   list<barcode>
}

现在, 条形码没有图案。它可以是以下任何一个:

ABCD-EF34GD-JOHN
ABCD-C08-YUVF

我想索引我的文档,以便搜索
    1. ABCD将同时返回。
    2. AB将同时返回。
    3. JO - 将返回ABCD-EF34GD-JOHN而不是名字为john的车     4.如果ID(被索引)包含&#34; ABCD&#34;,我不希望返回文档(用户没有看到它)

到目前为止,我已将car和sku定义为text_en 但是我没有2号和3号小号 有没有更好的方法来定义sku属性。

我的查询

 http://....:8983/solr/vault/select?q=ABCD&qf=Name+SKU&defType=edismax

感谢。

1 个答案:

答案 0 :(得分:2)

你在这里尝试做的实际上是用短划线(“ - ”)分隔的标记上的通配符搜索。

一种简单(但性能较慢)的方法是在查询的单词末尾添加一个星号(*),如下所示:

http://....:8983/solr/vault/select?q=AB*&qf=Name+SKU&defType=edismax

另一种选择是更改用于索引的字段类型并实现NGram算法。如果在字段中使用此过滤器,则将为要编制索引的单词中的每个字母组合创建一个toklen。例如:ABCD =&gt; AB,ABC,ABCD 所以它会找到你要找的东西,搜索速度会很快,但索引会非常大,索引时间也会显着增加。

您可以在此处找到更多信息: http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters#solr.EdgeNGramFilterFactory