该帖已经被评为良好帖
|
|
---|---|
作者 | 正文 |
发表时间:2010-01-14
最后修改:2010-01-14
QueryParser parser = new QueryParser(Version.LUCENE_CURRENT, field, analyzer); Query query = null; query = parser.parse(str); // query为PhraseQuery的对象 query = IKQueryParser.parse(field, str); //query为 BooleanQuery的对象,不为什么这样呢?? PhraseQuery应该与词语的顺序有关系,而booleanQuery就不一定了. |
|
返回顶楼 | |
发表时间:2010-01-14
ModifiableSolrParams params = new ModifiableSolrParams(); //spellCheckCompRH这句是开启solr的拼写检查的!建议先去solr的控制台查询结果看看! //如果屏蔽掉的话,是没有什么问题的,因为我有时候是不开启它的,使用没有错误的! //params.set("qt", "/spellCheckCompRH"); params.set("q", "ssh"); params.set("spellcheck", "on"); params.set("spellcheck.build", "true"); QueryResponse response = null; try { response = solr.query(params); } catch (SolrServerException e) { e.printStackTrace(); return; } 跟着lianj_lee文章学习,进行查询测试,竟然只能查询出索引库中英文记录,包含中文的记录,检索不出来 直接使用http://localhost:8080/solr/core0/admin/ 的查询结果也是一样,包含中文的记录检索不到 <schema name="example core one" version="1.1"> <types> <fieldtype name="string" class="solr.StrField" sortMissingLast="true" omitNorms="true"/> <!-- A text field that only splits on whitespace for exact matching of words --> <fieldType name="text_ws" class="solr.TextField" positionIncrementGap="100"> <analyzer> <tokenizer class="solr.WhitespaceTokenizerFactory"/> </analyzer> </fieldType> <!-- user IK ,代替掉下面的 --> <fieldType name="text" class="solr.TextField" positionIncrementGap="100"> <analyzer type="index"> <tokenizer class="org.wltea.analyzer.solr.IKTokenizerFactory" /> <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" /> <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1" /> <filter class="solr.LowerCaseFilterFactory" /> <filter class="solr.EnglishPorterFilterFactory" protected="protwords.txt" /> <filter class="solr.RemoveDuplicatesTokenFilterFactory" /> </analyzer> <analyzer type="query"> <tokenizer class="org.wltea.analyzer.solr.IKTokenizerFactory" /> <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true" /> <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" /> <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1" /> <filter class="solr.LowerCaseFilterFactory" /> <filter class="solr.EnglishPorterFilterFactory" protected="protwords.txt" /> <filter class="solr.RemoveDuplicatesTokenFilterFactory" /> </analyzer> </fieldType> </types> <fields> <!-- general --> <field name="id" type="string" indexed="true" stored="true" multiValued="false" required="true"/> <field name="type" type="string" indexed="true" stored="true" multiValued="false" /> <field name="name" type="string" indexed="true" stored="true" multiValued="false" /> <field name="author" type="string" indexed="true" stored="true" multiValued="false" /> <field name="summary" type="string" indexed="true" stored="true" multiValued="false" /> <field name="keywords" type="string" indexed="true" stored="true" multiValued="false" /> <field name="core1" type="string" indexed="true" stored="true" multiValued="false" /> <field name="all" type="text" indexed="true" stored="false" multiValued="true"/> </fields> <!-- field to use to determine and enforce document uniqueness. --> <uniqueKey>id</uniqueKey> <!-- field for the QueryParser to use when an explicit fieldname is absent --> <defaultSearchField>name</defaultSearchField> <!-- SolrQueryParser configuration: defaultOperator="AND|OR" --> <solrQueryParser defaultOperator="OR"/> <copyField source="id" dest="all"/> <copyField source="name" dest="all"/> <copyField source="summary" dest="all"/> <copyField source="author" dest="all"/> <copyField source="keywords" dest="all"/> |
|
返回顶楼 | |
发表时间:2010-01-14
看来是我自己的失误,是不存在问题的.没有引进jk 直接就导入了数据
|
|
返回顶楼 | |
发表时间:2010-01-15
Query query = IKQueryParser.parseMultiField(new String[] { "shop_Name", "keyword" ,"province"}, keyword, flags); // 搜索相似度最高的5条记录----如果这里的相似度设置太低,会引起数组越界 topDocs = isearcher.search(query, null ,5); 设置相似的度为5,但是实际检索大于5,就会引起 Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1 at com.xjj.IKAnalyzer.IKAnalyzerDemo.search(IKAnalyzerDemo.java:130) at com.xjj.IKAnalyzer.IKAnalyzerDemo.main(IKAnalyzerDemo.java:43) |
|
返回顶楼 | |
发表时间:2010-01-15
最后修改:2010-01-15
IK可以不用他自带的词典,而只用我自己定义的词典?
我的目的是想要分析提取出一个文章的所有关键词(我把关键词作为词典) |
|
返回顶楼 | |
发表时间:2010-01-15
中文分词跟lucence的版本有什么关系,不是可以独立的吗?先通过中文分词把词分好,然后传给搜索引擎不就行了?
|
|
返回顶楼 | |
发表时间:2010-01-16
Arden 写道 中文分词跟lucence的版本有什么关系,不是可以独立的吗?先通过中文分词把词分好,然后传给搜索引擎不就行了?
哥哥不做Lucene吧,理论上两者没关系,但是lucene新旧版本的分词接口不一样,就变的有关系了。 |
|
返回顶楼 | |
发表时间:2010-01-27
用的3.0及此分词器,在addDocument时报了一下java.lang.AbstractMethodError: org.apache.lucene.analysis.TokenStream.incrementToken()Z
请问是什么问题 |
|
返回顶楼 | |
发表时间:2010-01-27
zctya 写道 用的3.0及此分词器,在addDocument时报了一下java.lang.AbstractMethodError: org.apache.lucene.analysis.TokenStream.incrementToken()Z
请问是什么问题 java 接口的版本不对,会造成找不到抽象方法的异常。具体原因就多样化了,查查jar的实际引用版本吧,常常是IDE没有把正确的jar分布到lib的目录里,会有这个问题 |
|
返回顶楼 | |
发表时间:2010-01-27
开源代码能共享下吗?
|
|
返回顶楼 | |