-
lucene等搜索引擎解析
收藏lucene等搜索引擎解析
最近更新文章
lucene-hits和评分
Hits方法
返回值
Length()
Hits对象集合中所包含的文档数量
Doc(n)
排名第n的Document实例
Id(n)
排名第n的Document ID
Score(n)
排名第n的标准分值,大于0,小于等于1
后三种方法需要在文档还没有放入缓存之前,将其从索引读 ...
lucene-通过项进行搜索
对索引中的某个项进行搜索是最基本的搜索方式。每个项包括一个域名和一个文本值。
如果表达式是由单个单词构成的,QueryParser的parse()函数将返回一个TermQuery对象。
如:
IndexSearcher searcher=new IndexSearcher(directory);
Term t=new Term("isbn","2342343 ...
lucene-RangeQuery范围内搜索
QueryParser可以使用[起始 TO 终止]表达式,[起始 TO 终止]表达式来构造RangeQuery对象。
private Term begin,end;
begin=new Term("pubmonth","201001");
end=newTerm("pubmonth","201501");
Ran ...
lucene-PrefixQuery通过字符串进行搜索
搜索以指定字符串开头的项的文档。
当查询表达式中的短语以"*"结尾时,QueryParser的parse函数会为查询表达式项创建一个PrefixQuery对象。
//查找编程方面的书,包括它的子类书
IndexSearcher searcher=new IndexSearcher(directory);
Term term=newTerm("category&q ...
lucene-booleanquery组合查询
当parse函数中指定多个项时,QueryParser能很方便地构建BooleanQuery对象。使用圆括号分组,通过指定的-、+、AND、OR以及NOT这些操作符。
允许进行逻辑的AND、OR或NOT组合,通过BooleanQuery的add方法将一个查询子句增加到某个BooleanQuery对象中:
public void add(Query query,boolean required ...
lucene-PhraseQuery通过短语查询
通过查找域中的项都相隔一定的距离。两个项的位置最大相隔距离为slop。距离是指项要按顺序组成给定的短语,所需要移动位置的次数,不是指间距。
public class PhraseQueryTest extends TestCase{
privateIndexSearcher searcher;
protectedvoid setUp() throws IOException{
RAMDi ...
lucene-wildcardQuery
使用通配符查询,*代表0个或多个字母,?代表0个或1个字母。
Query query=new WildcardQuery(new Term("contents","?ild*"));
Hits hits=searcher.search(query);
使用QueryParser和wildcardQuery使用的是相同的语法。但使用QueryParse ...
lucene-QueryParser域的选择和指定范围内搜索
一、域的选择
1、可使用title:xyz的查询表达式搜索title域
2、可用(a b c)表示a、b、c域
二、指定范围内搜索
1、包括边界,范围域名为pubmonth,默认域为subject。
Query query=QueryParser.parse("pubmonth:[200401 TO2005-03]","subject",anal ...
lucene-FuzzyQuery模糊查询
1、查询用于匹配与指定项相似的项,levenshtein距离算法用来决定索引文件中的项与指定目标项的相似程度。即编辑距离算法,两个字符串之间相似度的一个度量方法。插入、删除和替换的字符个数
2、
IndexSearcher searcher=nwe IndexSearcher(directory);
Query query=new FuzzyQuery(new Term("con ...
lucene-查询表达式加权
1。使用^号后的符点型数据可以为^号之前的查询设置加权因子。
2。"junit^2.0 testing"可以将junit的TermQuery对象的加权因子设置为2.0
java-分析器解析
1、语汇单元的组成:
1)经过分析产生的基本单元。在索引时,Lucene使用特定的分析器来处理需要被语汇单元化的指定域,并将每个语汇单元以项的形式写入索引。
2)起点偏移量是指语汇单元文本的起始字符在原广西中的位置,而终点的偏移量则表示语汇单元终止字符的下一个位置。
3)文本被语汇单元化后,相对于前一语汇单元的位置信息被保存为位置增量值。所有的内置语汇单元将位置增量的默认值设置为1,表示所 ...
lucene-处理关键词域
使用Field.Keyword对关键词进行索引是很容易的,因为lucene本身就将它做为增加到域中的一个独立的语汇单元,所以它并不需要经过语汇单元的切分处理,Lucene会把它做为一个单独的项编入到索引中。
每个域的关键词性质只有在索引期间才能体现。一旦这个域被索引完后,就跟与其它的域没有区别了
java-lucene中几个主要可用的分析器
这些分析器几乎可以用于分析所有的西方语言。
1、WhitespaceAnalyzer:在空格处进行语汇单元的切分
2、SimpleAnalyzer:在非字母字符处切分文本,并将其转换为小写形式
3、StopAnalyzer:在非字母字符处切分文本,然后小写化,再移除信用词
4、StandardAnalyzer:基于复杂的语法来实现语汇单元化;这些语法规则可以识别e-mail地址、首字母缩 ...
lucene-使用特定方式分析一个域
可以通过PerFieldAnalyzerWrapper增加一个自定义的分析器用于特定域的分析
public void testPerFieldAnalyzer() throws Exception{
PerFieldAnalyzerWrapper analyzer=newPerFieldAnalyzerWrapper(new SimpleAnalyzer());
Queryquery=Qu ...
lucene-近音词查询
分析器通过Metaphone算法实现近音词查询,也可采用类似于Soundex的其它可行的算法
public void testKoolKat() throws Exceptoin{
RAMDirectory directory=new RAMDirectory();
Analyzer analyzer=new MetaphoneReplacementAnalyzer();
Inde ...
lucene-同义词分析器
这个分析器用SynonymFilter过滤器对StandardAnalyzer类进行封装,当向这个过滤器输入各个项时,会对这些项进行缓冲,并使用栈存储这些项的同义词
public class Sy ...
lucene-语汇单元的位置分析
以下程序显示出了语汇单元的位置,
Token[] tokens=tokensFromAnalysis(analyzer,text);
int position =0;
for (int i=0;i<tokens.length;i++){
Token token=tokens[i];
intincrement=token.getPositionIncrement();//得到 ...
lucene-词干分析与保留空位和停用词
1、分析器可以剔除所有停用词,并将这些词本来所处的位置留空,还可以对词干过滤器进行选择
2、移除停用词
public class PositionStopFilter extends TokenFilter{
private Set stopWords;
publicPositioinStopFilter(TokenSteam in,Set stpWords){
super(in);
...
lucene-亚洲语种和unicode字符分析
1、unicode字符
在lucene内部,所有的字符都是以标准UTF-8编码的,JAVA会在字符串对象内对Unicode编码进行自动处理,从而把我们从这个繁琐的处理任务中 ...
lucene-Nutch分析
分析:Nutch在索引时进行分析所使用的二元语法技术与查询过程中对短语的优化技术结合在一起。
public class NutchExample{
public static void main(String[] args) throws IOException{
NutchDocumentAnalyze analyer=new NutchDocumentAnalyzer();
disp ...