我必须实现一个文本搜索应用程序来索引新闻文章,然后允许用户在这些文本中搜索关键词,短语或日期。
在对我的选项(主要是SOLR与弹性搜索)进行一些考虑之后,我最终使用elasticsearch进行了一些测试。
现在我被困在关于映射和搜索查询构造选项的部分最适合我遇到的一些特殊情况。我当前的映射只有一个字段,其中包含所有文本,需要进行分析才能进行搜索。
与字段映射的具体部分:
"txt": {
"type" : "string",
"term_vector" : "with_positions_offsets",
"analyzer" : "shingle_analyzer"
}
其中shingle_analyzer
是:
"analysis" : {
"filter" : {
"filter_snow": {
"type":"snowball",
"language":"romanian"
},
"shingle":{
"type":"shingle",
"max_shingle_size":4,
"min_shingle_size":2,
"output_unigrams":"true",
"filler_token":""
},
"filter_stop":{
"type":"stop",
"stopwords":["_romanian_"]
}
},
"analyzer" : {
"shingle_analyzer" : {
"type" : "custom",
"tokenizer" : "standard",
"filter" : ["lowercase","asciifolding", "filter_stop","filter_snow","shingle"]
}
}}
我的问题涉及以下情况:
我的想法是使用不同的过滤器构建不同的字段,以涵盖所有这些可能的问题。
三个问题: