Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Lucene:多词短语的模糊搜索_Java_Eclipse_Search_Lucene - Fatal编程技术网

Java 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

在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~";
但这会导致程序搜索包含类似于jodiefoster的单词的短语,而我真正需要的是找到一个类似于jodie foster短语的短语,而不是逐字逐句


我的最后一个问题是:在忽略包含该短语的长句的情况下,如何对一个n字短语执行模糊搜索并找到类似的匹配项?

您找到解决此问题的方法了吗?