我第一次使用Lucene索引。我有一些印地语和英语的文档,我在文档的内容上创建了索引。当我搜索索引时,我得到了所有文档的结果,即使我的查询是一些英文单词,它也会返回hindi文档。我在下面添加了代码。请告诉我我在哪里错了。
IndexSearcher searcher = new IndexSearcher(directory);
QueryParser parser = new QueryParser("Content", analyzer);
while (condition)
{
Search(text, searcher, parser);
}
searcher.Close();
private static void Search(string text, IndexSearcher searcher, QueryParse parser)
{
Query query = parser.Parse(text);
Hits hits = searcher.Search(query);
int results = hits.Length();
for (int i = 0; i < results; i++)
{
Lucene.Net.Documents.Document doc = hits.Doc(i);
string show = doc.ToString();
float score = hits.Score(i);
/* insert doc id in database table*/
}
全部谢谢
答案 0 :(得分:0)
首先,我会使用Luke来检查我的查询语法是否正确。然后我会检查一个行为不端的英语单词是否是印地语单词的同音字(即拼写与印地语单词相同的英语单词)。
如果您想阻止搜索英语搜索词来提供印地语文档,您需要将每个文档标记为是英文还是印地文,然后在搜索查询中指定该标记。在Query Parser Syntax中,这可能如下所示:
ENGLISHSEARCHTERMS +(language:English)
(所有印地语文档的语言字段都设置为“印地语”,所有英语文档的语言字段都设置为“英语”。)