Lucene:模糊搜索多措辞短语

时间:2016-10-06 14:02:53

标签: java eclipse search lucene

我试图在Lucene上搜索一个多措辞的短语时面临多个问题。

首先,这就是我对数据编制索引的方式:

IndexWriterConfig luceneConfig = new IndexWriterConfig(new StandardAnalyzer());
Path path = Paths.get("C:/Users/i_l_g/Desktop/DBpedia/qls_labels-textfield");
Directory dir = FSDirectory.open(path);
IndexWriter writer = new IndexWriter(dir, luceneConfig);
while (rs.next()) {
            Document doc = new Document();
            doc.add(new Field("entity", rs.getString("entity"), TextField.TYPE_STORED));
            doc.add(new Field("label", rs.getString("label"), TextField.TYPE_STORED));
            writer.addDocument(doc);
        }

您可以说,我只是从数据库中提取行并为其编制索引。

现在我正在尝试搜索与我的查询类似的双措辞,但问题是我得到了各种句子。以下是我用来搜索短语的代码:

StandardAnalyzer analyzer = new StandardAnalyzer();

String query = "jodie foster";

QueryParser parser = new QueryParser("label", analyzer);

parser.setDefaultOperator(QueryParser.Operator.AND);

Query q = parser.parse(query);

这里的问题是我得到的东西像 Jodie Foster收到的奖项和提名名单。这意味着还会返回包含搜索短语的句子。

我也试图获得类似于我搜索的短语。我在网上发现我需要进行模糊搜索,为此我必须在查询中附加符号。它正在研究单个单词,但在上述查询中使用它时会给我带来问题。我试过像

这样的东西
String query = "\"jodie foster\"~";

我将最小相似度设置为0.1,以确保其正常工作

parser.setFuzzyMinSim(0.1f);

但是我得到的结果与第一次尝试完全相同(没有模糊搜索)

我也尝试在每个单词前添加

String query = "jodie~ foster~";

但这导致程序搜索包含与 jodie foster 相似的词组的短语,而我真正需要的是找到词组类似于短语 jodie foster 整体而不是一字不漏。

我的最后一个问题是:如何在忽略包含此短语的长句子的同时对n-worded短语进行模糊搜索并找到类似的匹配?

0 个答案:

没有答案