关于lucene的分词和查询

jiqiumin 2008-06-04
英文是没法实现的说的那样分的,字母貌似是输入时就要有空格,中文的话分词器会帮你按词库去分的或者你用的是一元,2元就会按字跟词区分
zhjt_88 2008-06-04
http://so.mdbchina.com caocao写的这个搜索,我一直在看,他写的不错,
zhjt_88 2008-06-04
我也是分词以后用BooleanQuery:这个你分词以后得到每个Term项,然后组合BooleanQuery来搜索吗?
wifivein 2008-06-04
zhjt_88@163.com 写道
我也是分词以后用BooleanQuery:这个你分词以后得到每个Term项,然后组合BooleanQuery来搜索吗?


得看具体的需求了,逻辑比较简单的情况下我确实是这么做的
即便交给QueryParser,它做的也是一样的事情——只是它处理复杂逻辑比较方便罢了
zhjt_88 2008-06-04
我举一个例子,比如我用单字分词,索引的内容是 爱的敬意、爱的致意,我搜爱的敬意,两个都能出来,这个怎么写呢
wifivein 2008-06-04
zhjt_88@163.com 写道
我举一个例子,比如我用单字分词,索引的内容是 爱的敬意、爱的致意,我搜爱的敬意,两个都能出来,这个怎么写呢


分词之后用“或”逻辑就能出来...
当然实际应用里不能这么做(会出来太多结果),我觉得可能是让分词结果部分匹配——具体什么规则那是算法问题,不是Lucene的问题了

Lucene倒是也有个FuzzyQuery的模糊查询,你可以试一下(影响性能..)
zhjt_88 2008-06-04
恩,谢谢,说道底还是分词
shadowlin 2008-06-24
ls的你说mdbchina的搜索是caocao写的?有他的联系方式么?
moshalanye 2008-07-02
查询分词 针对单字,应该是在进行词库分词  和润词之后 剔除无用词 后 出现单字时才应该考虑的,出现单字的时候 最好是用 TermQuery 直接进行单子完全匹配 ,不要做 prefixquery来做, 在词库分词和润词 建索引的时候始终遵循最大匹配 ,润次我推荐用3个字的,两个字的润词  对拼音容错  有比较大的限制   查询很大程度取决于索引 建立的时候  分词的合理性    
frogking 2010-03-09
public List<Entity> search (String keyword, int number)
  {
    Analyzer analyzer = new MMAnalyzer();
    QueryParser parser = new QueryParser("subject", analyzer);
//”subject”为检索所依据的属性字段  
      org.apache.lucene.search.Query luceneQuery;
      try
      {
        luceneQuery = parser.parse(((MMAnalyzer)analyzer).segment(keyword," "));
        // 先将关键字分词成以空格隔开的词组
        FullTextSession fullTextSession = Search.createFullTextSession(getSession());
        FullTextQuery fullTextQuery = fullTextSession.createFullTextQuery(luceneQuery,Entity.class);
// Entity.class获得持久化对象的Class

            
        int rowNum = fullTextQuery.getResultSize();
       
        if(0 == rowNum)
          return null;
        if(rowNum <= number){
          number = rowNum-1;
        }
        fullTextQuery.setFirstResult(0);
        fullTextQuery.setMaxResults(number);
       
        return fullTextQuery.list();
具体可以参考这里:[url]http://www.phome.asia/forum/thread/22831.html

[/url]
Global site tag (gtag.js) - Google Analytics