我们正在使用solnet作为.net Solr客户端库,将应用程序中的搜索和索引模块从DtSearch替换为Solr。
我们对Solr / Lucene来说相对较新,需要一些帮助/指导才能理解Solr中更高级的搜索选项。
当前应用程序使用DtSearch支持以下搜索选项:
1)词或短语
2)确切的单词或短语
3)不是这些单词或短语
4)一个或多个单词(“A”或“B”或“C”)
5)单词与另一个单词的n个单词的接近度
6)数字范围 - 从 - 到
7)选
。词干(搜索*找到搜索或搜索)
。同义词(搜索和查找寻找或查找)
。 n个字母内的模糊(p%arts找到巴黎)
。 Phonic同音异义词(#Smith也发现Smithe和Smythe)
作为示例,生成的搜索查询将发布到DtSearch以获取以下用例:
搜索词组:通用收藏
确切短语:linq
不是这些词:sql
这些词中的一个或多个:ICollection或ArrayList或Hashtable
邻近:csharp语言的4个单词
选项:
一个。词干
湾同义词
℃。模糊2个字母
d。 Phonic同音异义词
搜索查询: generic * collection * generic&收集和放大器; #generic #collection g %% eneric c %% ollection“linq”-sql ICollection OR ArrayList OR Hashtable csharp w / 4 language
我们已经能够进行简单的搜索(文件中的单数术语搜索) 内容)与Solr的亮点。现在我们需要用Solr / Lucene替换这些选项。
任何人都可以就我们应该在什么/哪个地方提供一些指示。
答案 0 :(得分:2)
字或短语
Solr支持通过变量boost来查询字段和跨字段以控制相关性。
Solr还提供各种查询,如词组查询,通配符,匹配前缀
确切的单词或短语
您可以自定义Solr来处理词组匹配和完全匹配词。
不是这些单词或短语
Negative queries - Solr支持使用-
或Not
一个或多个单词(“A”或“B”或“C”)
Boolean Operators - Solr为包含AND (+)
OR
语法的布尔运算符提供支持
单词与另一个单词的n个单词的接近程度 Promixity Search - Solr支持〜运算符的接近查询,然后是slop(邻近差异)
数字范围 - 从 - 到 Range Queries - Solr支持数字和日期的范围查询。
选项
词干(搜索*查找搜索或搜索) Stemmer - Solr有内置的割线机,可以直接包装开箱即用。它还允许定义新的割除器 详细Language Analysis支持各种语言
同义词(搜索和查找寻找或查找)
Synonym - Solr通过基于文件的方法支持同义词处理。
n个字母内的模糊(p%arts找到巴黎)
Fuzzy search - Solr使用〜运算符
Phonic同音词(#Smith也发现Smithe和Smythe)
Phonetic search - Solr提供phonetic次搜索,允许匹配拼写错误的单词。它可以自定义支持4个过滤器,可以自定义。