【发布时间】:2018-04-13 18:03:48
【问题描述】:
我正在开发一个具有搜索功能的 Java 应用程序。现在,对于搜索,我正在使用通配符进行搜索。因此,如果有人搜索“Hello Kitty”,他们也会得到 kit、hell、hello 等的结果。搜索后,我根据他们的点击为结果分配分数,但我如何比较结果来得出结论结果是 100% 匹配或 80% 匹配,例如“Hello Kit”,几乎与“hello kitty”匹配。有没有办法做到这一点?
搜索代码:
Directory directory = FSDirectory.open(path);
IndexReader indexReader = DirectoryReader.open(directory);
IndexSearcher indexSearcher = new IndexSearcher(indexReader);
Query query = new WildcardQuery(new Term("contents", "*" + str + "*"));
TopDocs topDocs = indexSearcher.search(query, 1000);
for (ScoreDoc scoreDoc : topDocs.scoreDocs) {
Document document = indexSearcher.doc(scoreDoc.doc);
IndexableField value = document.getField("score");
if (value != null) {
sortedMap.put(Integer.valueOf(document.get("id")), (Integer) value.numericValue());
} else {
sortedMap.put(Integer.valueOf(document.get("id")), 0);
}
}
indexSearcher.getIndexReader().close();
directory.close();
谢谢。
【问题讨论】:
标签: java search full-text-search