Java Lucene:多词短语的模糊搜索
在Lucene上搜索多词短语时,我面临着多个问题 首先,这是我为数据编制索引的方式:Java Lucene:多词短语的模糊搜索,java,eclipse,search,lucene,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); IndexWrit
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字短语执行模糊搜索并找到类似的匹配项?您找到解决此问题的方法了吗?