2010-03-21 94 views
9

我有一个Lucene索引,它目前区分大小写。我想添加选项将大小写不敏感的搜索作为后退。这意味着符合案例的结果会变得更加重要,并且会首先出现。例如,如果结果数限制为10,并且有10个符合我的情况的匹配,这就足够了。如果我只找到7个结果,我可以从不区分大小写的搜索中再添加3个结果。Lucene区分大小写和不敏感搜索

我的情况实际上更复杂,因为我有不同重量的物品。理想情况下,与“错误”情况匹配会增加一些重量。不用说,我不想要重复的结果。

一种可能的方法是有2个索引。一个与案件和一个没有和搜索两者。当然,这里有一些冗余,因为我需要索引两次。

有没有更好的解决方案?想法?

+0

你试过copyField吗?请参阅http://wiki.apache.org/solr/SchemaXml – Karussell 2010-03-21 16:14:54

回答

6

你已经试过copyField了吗?看到http://wiki.apache.org/solr/SchemaXml#Copy_Fields

如果不通过copyField具有不同配置定义了一个新的领域B和复制领域的分为B

+3

那么,copyField是一个Solr功能,我使用的是裸露的Lucene。然而,我可以用小写字母来添加一个带有相同索引文本的额外字段。这比创建完全独立的索引要好得多,所以+1。 – zvikico 2010-03-21 17:07:45

+0

ups,好的。我有完全相同的问题,但正在与solr合作。尽管我加了这个答案有点太快了。 – Karussell 2010-03-21 17:29:50

+0

我已经开始和额外的领域运行,所以你的回答给了我一个正确的方向推动。这就是我需要的。再次感谢。我会保持开放,看看我能否获得更高效的解决方案。 – zvikico 2010-03-21 17:49:52

5

Lucene搜索是区分大小写的, 它只是所有的输入通常 下套管,在经过 Queryparser后,所以感觉就像是 不区分大小写。换句话说, 不会小写您在 索引之前的输入,也不会小写您的 查询(例如,选择一个分析仪,其中 不会小写)关键字分析器 例如。

[setLowercaseExpandedTerms][1](boolean lowercaseExpandedTerms) 

可以索引使用大小写敏感的分析的术语和当u想不区分大小写的查询中使用它亘古不变的转换一类的术语来小写

看看通配符,前缀和模糊查询

+0

自然而然,使用小心谨慎的分析器和较低的关怀查询将不会产生正确的结果。 – zvikico 2010-03-22 17:45:28

+0

你可以用sqlite或mysql做同样的事吗? – Naveen 2011-04-10 22:31:36

+1

@Naveen:sqlite和mysql有fullblown数据库引擎,你的问题是什么? – Narayan 2011-04-11 05:32:59

相关问题