gpt4 book ai didi

lucene.net - 使用 Lucene.Net 的多词自动建议

转载 作者:行者123 更新时间:2023-12-03 18:05:53 35 4
gpt4 key购买 nike

我目前正在开发一个搜索应用程序,它使用 Lucene.Net 将数据从数据库索引到索引文件。我有一个产品目录,其中包含名称、长短描述、sku 和其他字段。数据使用 StandardAnalyzer 存储在 Index 中。我正在尝试为文本字段添加自动建议,并使用 TermEnum 从索引中获取所有关键字词及其分数。但返回的条款是单条款的。例如,如果我输入 co,返回的建议是服装、计数、收藏、牛仔、组合等。但我希望建议返回短语。例如,如果我搜索 co,建议应该是牛仔服装、成人服装、密码锁等。

以下是用于获取建议的代码:

public string[] GetKeywords(string strSearchExp)
{

IndexReader rd = IndexReader.Open(mIndexLoc);
TermEnum tenum = rd.Terms(new Term("Name", strSearchExp));
string[] strResult = new string[10];
int i = 0;
Dictionary<string, double> KeywordList = new Dictionary<string, double>();
do
{
//terms = tenum.Term();
if (tenum.Term() != null)
{
//strResult[i] = terms.text.ToString();
KeywordList.Add(tenum.Term().text.ToString(), tenum.DocFreq());
}
} while (tenum.Next() && tenum.Term().text.StartsWith(strSearchExp) && tenum.Term().text.Length > 1);

var sortedDict = (from entry in KeywordList orderby entry.Value descending select entry);

foreach (KeyValuePair<string, double> data in sortedDict)
{
if (data.Key.Length > 1)
{
strResult[i] = data.Key;
i++;
}
if (i >= 10) //Exit the for Loop if the count exceeds 10
break;
}
tenum.Close();
rd.Close();
return strResult;

}

任何人都可以给我指示来实现这一目标吗?感谢您查看这个。

最佳答案

您可以使用 Field.Index.NOT_ANALYZED 在不同的字段中简单地索引您的产品名称。参数或 KeywordAnalyzer ,然后对其运行通配符查询或前缀查询。

关于lucene.net - 使用 Lucene.Net 的多词自动建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3000694/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com