我在我的应用程序中使用solr同义词..这里是查询,我将从中获取同义词
http://localhost:8983/solr/analysis/field?analysis.query='+request.term+'&analysis.fieldname=description&analysis.showmatch=true&wt=json&indent=true
我尝试使用solrj来获得同义词
ModifiableSolrParams params = new ModifiableSolrParams();
params.set("qt", "/analysis/field");
params.set("analysis.query", queryterm);
params.set("analysis.fieldname", "description");
params.set("analysis.showmatch", true);
try {
resp1 = server.query(params);
System.out.println(resp1);
} catch (SolrServerException ex) {
System.out.println(ex);
}
SolrDocumentList results = resp1.getResults();
for (int i = 0; i < results.size(); ++i) {
System.out.println(results.get(i).getFieldValue("description").toString());
}
如何获得同义词?
答案 0 :(得分:0)
您无法通过SolrJ获取同义词。这里唯一的方法是使用RestAPI(Solr 4.8 +)
同义词在大多数情况下,用于管理同义词的API表现出来 类似于停用词的API,除了代替使用 单词列表,我们需要使用地图,每个值的值 地图中的条目是一组术语的同义词。与停止词一样, 示例服务器附带一组最小的英语同义词 由以下字段类型定义激活的映射 schema.xml中:
<fieldType name="managed_en" positionIncrementGap="100">
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.ManagedSynonymFilterFactory"
managed="english" />
</analyzer>
</fieldType>
要获取托管英语同义词的地图,请发送GET请求:
curl "http://localhost:8983/solr/collection1/schema/analysis/
synonyms/english"
有关该内容的更多信息 - http://lucidworks.com/blog/introducing-solrs-restmanager-and-managed-stop-words-and-synonyms/