小编tad*_*ada的帖子

用lucene进行模糊搜索

我用lucene 4.3.1实现了模糊搜索,但我对结果不满意.我想指出一些它应该返回的结果.因此,例如,如果我想要10个结果,它应该返回10个最佳匹配,无论它们有多糟糕.如果我搜索的单词与索引中的任何内容非常不同,则大多数情况下它不会返回任何内容.如何获得更多/更模糊的结果?

这里是我的代码:

    public String[] luceneQuery(String query, int numberOfHits, String path)
        throws ParseException, IOException {

    File dir = new File(path);
    Directory index = FSDirectory.open(dir);

    query = query + "~";
    Query q = new QueryParser(Version.LUCENE_43, "label", analyzer)
            .parse(query);

    IndexReader reader = DirectoryReader.open(index);
    IndexSearcher searcher = new IndexSearcher(reader);

    Query fuzzyQuery = new FuzzyQuery(new Term("label", query), 2);

    ScoreDoc[] fuzzyHits = searcher.search(fuzzyQuery, numberOfHits).scoreDocs;
    String[] fuzzyResults = new String[fuzzyHits.length];

    for (int i = 0; i < fuzzyHits.length; ++i) {
        int docId = fuzzyHits[i].doc;
        Document d …
Run Code Online (Sandbox Code Playgroud)

lucene full-text-search fuzzy-search

6
推荐指数
1
解决办法
1万
查看次数

使用 lucene 创建和查询 n-gram 索引

我想从我的输入文件中构建一个包含每行 n-gram 的索引,如下所示:

Segeln bei den Olympischen Sommerspielen
Erdmond
Olympische Spiele
Turnen bei den Olympischen Sommerspielen
Tennis bei den Olympischen Sommerspielen
Geschichte der Astronomie
Run Code Online (Sandbox Code Playgroud)

我需要 n-gram,因为我想在索引中搜索,但我必须假设搜索词中有很多打字错误。例如,如果我使用术语“schichte astrologie”进行搜索,我想找到“Geschichte der Astronomie”。如果它能给我一个最好的匹配列表,那就更好了,比如最好的 10 个匹配,无论它们有多糟糕。如果有比 n-gram 更好的方法来实现这一点,我希望您能指出我正确的方向,或者您有关于如何创建索引以及如何查询索引的提示。我会很高兴有一个例子来帮助我理解如何去做。我目前使用 lucene 4.3.1。我更愿意在java中实现它而不是在命令行上构建索引。

java lucene indexing search

5
推荐指数
1
解决办法
2407
查看次数

标签 统计

lucene ×2

full-text-search ×1

fuzzy-search ×1

indexing ×1

java ×1

search ×1