我需要Lucene在索引我的文本时保留一些标点符号,所以我现在使用的WhitespaceAnalyzer不会删除符号。
如果文本中有oranges, apples and bananas
这样的句子,我希望短语查询"oranges, apples"
成为匹配(不是没有逗号),这样就可以了。
但是,我还希望简单查询oranges
能够产生匹配,但似乎索引标记也包含逗号(oranges,
)所以它不会成为除非我在查询中也写了逗号,这是不可取的。
有没有简单的方法让我的工作方式符合我的需要?
提前致谢。
答案 0 :(得分:0)
我知道这是一个非常老的问题,但我很无聊,无论如何我都会答复。我看到了两种方法:
TokenFilter
,每当一个单词包含非打孔版本的标点符号时,该enum HerosType { All, Popular }
class HerosList extends ChangeNotifier {
// var lst = new List(3) --> Fixed List, var lst = [val1,val2,val3] or var lst = new List() --> Growable List
final List<HeroClass> _allHeros = [
HeroClass(
heroName: 'Juggernaunt',
pngName: 'juggernaut',
viewNumber: 35,
clipPathColor: Color(0xffc43a3d),
bottom: 15.0,
right: -65.0,
height: 210.0,
width: 250.0),
//Much More HeroClasses
];
HerosType _herosType = HerosType.All;
List<HeroClass> _heros;
HerosList() {
_heros = List.from(_allHeros);
}
List<HeroClass> get heros => _heros;
List<HeroClass> get allHeros => _allHeros;
List<HeroClass> get popularHeros => [
for (var heros in _allHeros)
if (heros.viewNumber > 10) heros
];
void toggleHeroesType() {
//https://github.com/dart-lang/language/blob/master/accepted/2.3/spread-collections/feature-specification.md
if (_herosType == HerosType.All) {
_herosType = HerosType.Popular;
_heros = [
for (var heros in _allHeros)
if (heros.viewNumber > 30) heros
];
return notifyListeners();
} else {
_herosType = HerosType.All;
_heros = List.from(_allHeros);
return notifyListeners();
}
}
}
就会创建一个同义词(例如,将标记插入位置长度为0的流中)。< / li>